[INFO] fetching crate lamellar-ucc-sys 0.1.0-rc.1...
[INFO] checking lamellar-ucc-sys-0.1.0-rc.1 against da86f4d0726be475afbbffe40cb2f65741c51ad3 for pr-159877
[INFO] extracting crate lamellar-ucc-sys 0.1.0-rc.1 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate lamellar-ucc-sys 0.1.0-rc.1
[INFO] finished tweaking crates.io crate lamellar-ucc-sys 0.1.0-rc.1
[INFO] tweaked toml for crates.io crate lamellar-ucc-sys 0.1.0-rc.1 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate lamellar-ucc-sys 0.1.0-rc.1 on toolchain da86f4d0726be475afbbffe40cb2f65741c51ad3
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da86f4d0726be475afbbffe40cb2f65741c51ad3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate lamellar-ucc-sys 0.1.0-rc.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da86f4d0726be475afbbffe40cb2f65741c51ad3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded autotools v0.2.7
[INFO] [stderr]   Downloaded glob v0.3.4
[INFO] [stderr]   Downloaded lamellar-ucx-sys v0.1.0-rc.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:1fa6594d87c8fa7b311925a7a77a16f539833322d9dfba4ce891f211db2f90b1" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2
[INFO] running `Command { std: "docker" "start" "5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2" "/opt/rustwide/cargo-home/bin/cargo" "+da86f4d0726be475afbbffe40cb2f65741c51ad3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2" "/opt/rustwide/cargo-home/bin/cargo" "+da86f4d0726be475afbbffe40cb2f65741c51ad3" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling glob v0.3.4
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling bindgen v0.72.1
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling rustc-hash v2.1.3
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]    Compiling cc v1.4.0
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling autotools v0.2.7
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling cexpr v0.6.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling lamellar-ucx-sys v0.1.0-rc.1
[INFO] [stderr]    Compiling lamellar-ucc-sys v0.1.0-rc.1 (/opt/rustwide/workdir)
[INFO] [stderr] warning: lamellar-ucc-sys@0.1.0-rc.1: UCC_DIR environment variable not set, building UCC from source. This may take a while. To use a pre-built version of UCC, set the UCC_DIR environment variable to the path of the UCC installation.
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:32481
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...:: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set_...
[INFO] [stdout]   |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unnecessary_transmutes)]` on by default
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { u32::cast_signed (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:32669
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val ...
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = i32::cast_unsigned (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:32864
[INFO] [stdout]   |
[INFO] [stdout] 3 | ... { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } ...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { u32::cast_signed (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:32481
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...:: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set_...
[INFO] [stdout]   |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unnecessary_transmutes)]` on by default
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { u32::cast_signed (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:33156
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > ::...
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = i32::cast_unsigned (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:32669
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val ...
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = i32::cast_unsigned (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:33636
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_uni...
[INFO] [stdout]   |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { i32::cast_unsigned (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:32864
[INFO] [stdout]   |
[INFO] [stdout] 3 | ... { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } ...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { u32::cast_signed (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:33156
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > ::...
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = i32::cast_unsigned (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]  --> /opt/rustwide/target/debug/build/lamellar-ucc-sys-430ae1d386f2dda2/out/bindings.rs:3:33636
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_uni...
[INFO] [stdout]   |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: replace this with
[INFO] [stdout]   |
[INFO] [stdout] 3 - # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { :: std :: mem :: transmute (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout] 3 + # [repr (C)] # [derive (Copy , Clone , Debug , Default , Eq , Hash , Ord , PartialEq , PartialOrd)] pub struct __BindgenBitfieldUnit < Storage > { storage : Storage , } impl < Storage > __BindgenBitfieldUnit < Storage > { # [inline] pub const fn new (storage : Storage) -> Self { Self { storage } } } impl < Storage > __BindgenBitfieldUnit < Storage > where Storage : AsRef < [u8] > + AsMut < [u8] >, { # [inline] fn extract_bit (byte : u8 , index : usize) -> bool { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; byte & mask == mask } # [inline] pub fn get_bit (& self , index : usize) -> bool { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = self . storage . as_ref () [byte_index] ; Self :: extract_bit (byte , index) } # [inline] pub unsafe fn raw_get_bit (this : * const Self , index : usize) -> bool { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { * (core :: ptr :: addr_of ! ((* this) . storage) as * const u8) . offset (byte_index as isize) } ; Self :: extract_bit (byte , index) } # [inline] fn change_bit (byte : u8 , index : usize , val : bool) -> u8 { let bit_index = if cfg ! (target_endian = "big") { 7 - (index % 8) } else { index % 8 } ; let mask = 1 << bit_index ; if val { byte | mask } else { byte & ! mask } } # [inline] pub fn set_bit (& mut self , index : usize , val : bool) { debug_assert ! (index / 8 < self . storage . as_ref () . len ()) ; let byte_index = index / 8 ; let byte = & mut self . storage . as_mut () [byte_index] ; * byte = Self :: change_bit (* byte , index , val) ; } # [inline] pub unsafe fn raw_set_bit (this : * mut Self , index : usize , val : bool) { debug_assert ! (index / 8 < core :: mem :: size_of ::< Storage > ()) ; let byte_index = index / 8 ; let byte = unsafe { (core :: ptr :: addr_of_mut ! ((* this) . storage) as * mut u8) . offset (byte_index as isize) } ; unsafe { * byte = Self :: change_bit (* byte , index , val) } ; } # [inline] pub fn get (& self , bit_offset : usize , bit_width : u8) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if self . get_bit (i + bit_offset) { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub unsafe fn raw_get (this : * const Self , bit_offset : usize , bit_width : u8 ,) -> u64 { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; let mut val = 0 ; for i in 0 .. (bit_width as usize) { if unsafe { Self :: raw_get_bit (this , i + bit_offset) } { let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; val |= 1 << index ; } } val } # [inline] pub fn set (& mut self , bit_offset : usize , bit_width : u8 , val : u64) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < self . storage . as_ref () . len ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= self . storage . as_ref () . len ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; self . set_bit (index + bit_offset , val_bit_is_set) ; } } # [inline] pub unsafe fn raw_set (this : * mut Self , bit_offset : usize , bit_width : u8 , val : u64 ,) { debug_assert ! (bit_width <= 64) ; debug_assert ! (bit_offset / 8 < core :: mem :: size_of ::< Storage > ()) ; debug_assert ! ((bit_offset + (bit_width as usize)) / 8 <= core :: mem :: size_of ::< Storage > ()) ; for i in 0 .. (bit_width as usize) { let mask = 1 << i ; let val_bit_is_set = val & mask == mask ; let index = if cfg ! (target_endian = "big") { bit_width as usize - 1 - i } else { i } ; unsafe { Self :: raw_set_bit (this , index + bit_offset , val_bit_is_set) } ; } } } # [derive (PartialEq , Copy , Clone , Hash , Debug , Default)] # [repr (C)] pub struct __BindgenComplex < T > { pub re : T , pub im : T } pub const _STDINT_H : u32 = 1 ; pub const _FEATURES_H : u32 = 1 ; pub const _DEFAULT_SOURCE : u32 = 1 ; pub const __GLIBC_USE_ISOC2Y : u32 = 0 ; pub const __GLIBC_USE_ISOC23 : u32 = 0 ; pub const __USE_ISOC11 : u32 = 1 ; pub const __USE_ISOC99 : u32 = 1 ; pub const __USE_ISOC95 : u32 = 1 ; pub const __USE_POSIX_IMPLICITLY : u32 = 1 ; pub const _POSIX_SOURCE : u32 = 1 ; pub const _POSIX_C_SOURCE : u32 = 202405 ; pub const __USE_POSIX : u32 = 1 ; pub const __USE_POSIX2 : u32 = 1 ; pub const __USE_POSIX199309 : u32 = 1 ; pub const __USE_POSIX199506 : u32 = 1 ; pub const __USE_XOPEN2K : u32 = 1 ; pub const __USE_XOPEN2K8 : u32 = 1 ; pub const _ATFILE_SOURCE : u32 = 1 ; pub const __USE_XOPEN2K24 : u32 = 1 ; pub const __WORDSIZE : u32 = 64 ; pub const __WORDSIZE_TIME64_COMPAT32 : u32 = 1 ; pub const __SYSCALL_WORDSIZE : u32 = 64 ; pub const __TIMESIZE : u32 = 64 ; pub const __USE_TIME_BITS64 : u32 = 1 ; pub const __USE_MISC : u32 = 1 ; pub const __USE_ATFILE : u32 = 1 ; pub const __USE_FORTIFY_LEVEL : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_GETS : u32 = 0 ; pub const __GLIBC_USE_DEPRECATED_SCANF : u32 = 0 ; pub const __GLIBC_USE_C23_STRTOL : u32 = 0 ; pub const _STDC_PREDEF_H : u32 = 1 ; pub const __STDC_IEC_559__ : u32 = 1 ; pub const __STDC_IEC_60559_BFP__ : u32 = 201404 ; pub const __STDC_IEC_559_COMPLEX__ : u32 = 1 ; pub const __STDC_IEC_60559_COMPLEX__ : u32 = 201404 ; pub const __STDC_ISO_10646__ : u32 = 201706 ; pub const __GNU_LIBRARY__ : u32 = 6 ; pub const __GLIBC__ : u32 = 2 ; pub const __GLIBC_MINOR__ : u32 = 43 ; pub const _SYS_CDEFS_H : u32 = 1 ; pub const __glibc_c99_flexarr_available : u32 = 1 ; pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI : u32 = 0 ; pub const __HAVE_GENERIC_SELECTION : u32 = 1 ; pub const __GLIBC_USE_LIB_EXT2 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_BFP_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 : u32 = 0 ; pub const __GLIBC_USE_IEC_60559_TYPES_EXT : u32 = 0 ; pub const _BITS_TYPES_H : u32 = 1 ; pub const _BITS_TYPESIZES_H : u32 = 1 ; pub const __OFF_T_MATCHES_OFF64_T : u32 = 1 ; pub const __INO_T_MATCHES_INO64_T : u32 = 1 ; pub const __RLIM_T_MATCHES_RLIM64_T : u32 = 1 ; pub const __STATFS_MATCHES_STATFS64 : u32 = 1 ; pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 : u32 = 1 ; pub const __FD_SETSIZE : u32 = 1024 ; pub const _BITS_TIME64_H : u32 = 1 ; pub const _BITS_WCHAR_H : u32 = 1 ; pub const _BITS_STDINT_INTN_H : u32 = 1 ; pub const _BITS_STDINT_UINTN_H : u32 = 1 ; pub const _BITS_STDINT_LEAST_H : u32 = 1 ; pub const INT8_MIN : i32 = - 128 ; pub const INT16_MIN : i32 = - 32768 ; pub const INT32_MIN : i32 = - 2147483648 ; pub const INT8_MAX : u32 = 127 ; pub const INT16_MAX : u32 = 32767 ; pub const INT32_MAX : u32 = 2147483647 ; pub const UINT8_MAX : u32 = 255 ; pub const UINT16_MAX : u32 = 65535 ; pub const UINT32_MAX : u32 = 4294967295 ; pub const INT_LEAST8_MIN : i32 = - 128 ; pub const INT_LEAST16_MIN : i32 = - 32768 ; pub const INT_LEAST32_MIN : i32 = - 2147483648 ; pub const INT_LEAST8_MAX : u32 = 127 ; pub const INT_LEAST16_MAX : u32 = 32767 ; pub const INT_LEAST32_MAX : u32 = 2147483647 ; pub const UINT_LEAST8_MAX : u32 = 255 ; pub const UINT_LEAST16_MAX : u32 = 65535 ; pub const UINT_LEAST32_MAX : u32 = 4294967295 ; pub const INT_FAST8_MIN : i32 = - 128 ; pub const INT_FAST16_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST32_MIN : i64 = - 9223372036854775808 ; pub const INT_FAST8_MAX : u32 = 127 ; pub const INT_FAST16_MAX : u64 = 9223372036854775807 ; pub const INT_FAST32_MAX : u64 = 9223372036854775807 ; pub const UINT_FAST8_MAX : u32 = 255 ; pub const UINT_FAST16_MAX : i32 = - 1 ; pub const UINT_FAST32_MAX : i32 = - 1 ; pub const INTPTR_MIN : i64 = - 9223372036854775808 ; pub const INTPTR_MAX : u64 = 9223372036854775807 ; pub const UINTPTR_MAX : i32 = - 1 ; pub const PTRDIFF_MIN : i64 = - 9223372036854775808 ; pub const PTRDIFF_MAX : u64 = 9223372036854775807 ; pub const SIG_ATOMIC_MIN : i32 = - 2147483648 ; pub const SIG_ATOMIC_MAX : u32 = 2147483647 ; pub const SIZE_MAX : i32 = - 1 ; pub const WINT_MIN : u32 = 0 ; pub const WINT_MAX : u32 = 4294967295 ; pub const UCC_VERSION_MAJOR_SHIFT : u32 = 24 ; pub const UCC_VERSION_MINOR_SHIFT : u32 = 16 ; pub const UCC_API_MAJOR : u32 = 1 ; pub const UCC_API_MINOR : u32 = 8 ; pub const UCC_VERSION_STRING : & [u8 ; 6] = b"1.8.0\0" ; pub const UCC_GIT_REVISION : & [u8 ; 1] = b"\0" ; pub const _STDIO_H : u32 = 1 ; pub const _____fpos_t_defined : u32 = 1 ; pub const ____mbstate_t_defined : u32 = 1 ; pub const _____fpos64_t_defined : u32 = 1 ; pub const ____FILE_defined : u32 = 1 ; pub const __FILE_defined : u32 = 1 ; pub const __struct_FILE_defined : u32 = 1 ; pub const _IO_EOF_SEEN : u32 = 16 ; pub const _IO_ERR_SEEN : u32 = 32 ; pub const _IO_USER_LOCK : u32 = 32768 ; pub const __cookie_io_functions_t_defined : u32 = 1 ; pub const _IOFBF : u32 = 0 ; pub const _IOLBF : u32 = 1 ; pub const _IONBF : u32 = 2 ; pub const BUFSIZ : u32 = 8192 ; pub const EOF : i32 = - 1 ; pub const SEEK_SET : u32 = 0 ; pub const SEEK_CUR : u32 = 1 ; pub const SEEK_END : u32 = 2 ; pub const P_tmpdir : & [u8 ; 5] = b"/tmp\0" ; pub const L_tmpnam : u32 = 20 ; pub const TMP_MAX : u32 = 238328 ; pub const _BITS_STDIO_LIM_H : u32 = 1 ; pub const FILENAME_MAX : u32 = 4096 ; pub const L_ctermid : u32 = 9 ; pub const FOPEN_MAX : u32 = 16 ; pub const __HAVE_FLOAT128 : u32 = 1 ; pub const __HAVE_DISTINCT_FLOAT128 : u32 = 1 ; pub const __HAVE_FLOAT64X : u32 = 1 ; pub const __HAVE_FLOAT64X_LONG_DOUBLE : u32 = 1 ; pub const __HAVE_FLOAT16 : u32 = 0 ; pub const __HAVE_FLOAT32 : u32 = 1 ; pub const __HAVE_FLOAT64 : u32 = 1 ; pub const __HAVE_FLOAT32X : u32 = 1 ; pub const __HAVE_FLOAT128X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT16 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64 : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT32X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT64X : u32 = 0 ; pub const __HAVE_DISTINCT_FLOAT128X : u32 = 0 ; pub const __HAVE_FLOATN_NOT_TYPEDEF : u32 = 0 ; pub const UCC_DT_PREDEFINED_LAST : u32 = 18 ; pub const ucc_status_t_UCC_OK : ucc_status_t = 0 ; # [doc = "< Operation is posted and is in progress"] pub const ucc_status_t_UCC_INPROGRESS : ucc_status_t = 1 ; # [doc = "< Operation initialized but not posted"] pub const ucc_status_t_UCC_OPERATION_INITIALIZED : ucc_status_t = 2 ; pub const ucc_status_t_UCC_ERR_NOT_SUPPORTED : ucc_status_t = - 1 ; pub const ucc_status_t_UCC_ERR_NOT_IMPLEMENTED : ucc_status_t = - 2 ; pub const ucc_status_t_UCC_ERR_INVALID_PARAM : ucc_status_t = - 3 ; pub const ucc_status_t_UCC_ERR_NO_MEMORY : ucc_status_t = - 4 ; pub const ucc_status_t_UCC_ERR_NO_RESOURCE : ucc_status_t = - 5 ; # [doc = "< General purpose return code without specific error"] pub const ucc_status_t_UCC_ERR_NO_MESSAGE : ucc_status_t = - 6 ; pub const ucc_status_t_UCC_ERR_NOT_FOUND : ucc_status_t = - 7 ; pub const ucc_status_t_UCC_ERR_TIMED_OUT : ucc_status_t = - 8 ; pub const ucc_status_t_UCC_ERR_IO_ERROR : ucc_status_t = - 9 ; pub const ucc_status_t_UCC_ERR_LAST : ucc_status_t = - 100 ; # [doc = " @ingroup UCC_UTILS\n @brief Status codes for the UCC operations"] pub type ucc_status_t = :: std :: os :: raw :: c_int ; unsafe extern "C" { # [doc = " @ingroup UCC_UTILS\n @brief Routine to convert status code to string"] pub fn ucc_status_string (status : ucc_status_t) -> * const :: std :: os :: raw :: c_char ; } pub type wchar_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [repr (align (16))] # [derive (Debug , Copy , Clone)] pub struct max_align_t { pub __clang_max_align_nonce1 : :: std :: os :: raw :: c_longlong , pub __bindgen_padding_0 : u64 , pub __clang_max_align_nonce2 : u128 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of max_align_t"] [:: std :: mem :: size_of :: < max_align_t > () - 32usize] ; ["Alignment of max_align_t"] [:: std :: mem :: align_of :: < max_align_t > () - 16usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce1"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce1) - 0usize] ; ["Offset of field: max_align_t::__clang_max_align_nonce2"] [:: std :: mem :: offset_of ! (max_align_t , __clang_max_align_nonce2) - 16usize] ; } ; pub type __u_char = :: std :: os :: raw :: c_uchar ; pub type __u_short = :: std :: os :: raw :: c_ushort ; pub type __u_int = :: std :: os :: raw :: c_uint ; pub type __u_long = :: std :: os :: raw :: c_ulong ; pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __int_least8_t = __int8_t ; pub type __uint_least8_t = __uint8_t ; pub type __int_least16_t = __int16_t ; pub type __uint_least16_t = __uint16_t ; pub type __int_least32_t = __int32_t ; pub type __uint_least32_t = __uint32_t ; pub type __int_least64_t = __int64_t ; pub type __uint_least64_t = __uint64_t ; pub type __quad_t = :: std :: os :: raw :: c_long ; pub type __u_quad_t = :: std :: os :: raw :: c_ulong ; pub type __intmax_t = :: std :: os :: raw :: c_long ; pub type __uintmax_t = :: std :: os :: raw :: c_ulong ; pub type __dev_t = :: std :: os :: raw :: c_ulong ; pub type __uid_t = :: std :: os :: raw :: c_uint ; pub type __gid_t = :: std :: os :: raw :: c_uint ; pub type __ino_t = :: std :: os :: raw :: c_ulong ; pub type __ino64_t = :: std :: os :: raw :: c_ulong ; pub type __mode_t = :: std :: os :: raw :: c_uint ; pub type __nlink_t = :: std :: os :: raw :: c_ulong ; pub type __off_t = :: std :: os :: raw :: c_long ; pub type __off64_t = :: std :: os :: raw :: c_long ; pub type __pid_t = :: std :: os :: raw :: c_int ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __fsid_t { pub __val : [:: std :: os :: raw :: c_int ; 2usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __fsid_t"] [:: std :: mem :: size_of :: < __fsid_t > () - 8usize] ; ["Alignment of __fsid_t"] [:: std :: mem :: align_of :: < __fsid_t > () - 4usize] ; ["Offset of field: __fsid_t::__val"] [:: std :: mem :: offset_of ! (__fsid_t , __val) - 0usize] ; } ; pub type __clock_t = :: std :: os :: raw :: c_long ; pub type __rlim_t = :: std :: os :: raw :: c_ulong ; pub type __rlim64_t = :: std :: os :: raw :: c_ulong ; pub type __id_t = :: std :: os :: raw :: c_uint ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __useconds_t = :: std :: os :: raw :: c_uint ; pub type __suseconds_t = :: std :: os :: raw :: c_long ; pub type __suseconds64_t = :: std :: os :: raw :: c_long ; pub type __daddr_t = :: std :: os :: raw :: c_int ; pub type __key_t = :: std :: os :: raw :: c_int ; pub type __clockid_t = :: std :: os :: raw :: c_int ; pub type __timer_t = * mut :: std :: os :: raw :: c_void ; pub type __blksize_t = :: std :: os :: raw :: c_long ; pub type __blkcnt_t = :: std :: os :: raw :: c_long ; pub type __blkcnt64_t = :: std :: os :: raw :: c_long ; pub type __fsblkcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsblkcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt_t = :: std :: os :: raw :: c_ulong ; pub type __fsfilcnt64_t = :: std :: os :: raw :: c_ulong ; pub type __fsword_t = :: std :: os :: raw :: c_long ; pub type __ssize_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; pub type __syscall_ulong_t = :: std :: os :: raw :: c_ulong ; pub type __loff_t = __off64_t ; pub type __caddr_t = * mut :: std :: os :: raw :: c_char ; pub type __intptr_t = :: std :: os :: raw :: c_long ; pub type __socklen_t = :: std :: os :: raw :: c_uint ; pub type __sig_atomic_t = :: std :: os :: raw :: c_int ; pub type int_least8_t = __int_least8_t ; pub type int_least16_t = __int_least16_t ; pub type int_least32_t = __int_least32_t ; pub type int_least64_t = __int_least64_t ; pub type uint_least8_t = __uint_least8_t ; pub type uint_least16_t = __uint_least16_t ; pub type uint_least32_t = __uint_least32_t ; pub type uint_least64_t = __uint_least64_t ; pub type int_fast8_t = :: std :: os :: raw :: c_schar ; pub type int_fast16_t = :: std :: os :: raw :: c_long ; pub type int_fast32_t = :: std :: os :: raw :: c_long ; pub type int_fast64_t = :: std :: os :: raw :: c_long ; pub type uint_fast8_t = :: std :: os :: raw :: c_uchar ; pub type uint_fast16_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast32_t = :: std :: os :: raw :: c_ulong ; pub type uint_fast64_t = :: std :: os :: raw :: c_ulong ; pub type intmax_t = __intmax_t ; pub type uintmax_t = __uintmax_t ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_info { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n @brief UCC library handle\n\n The ucc library handle is an opaque handle created by the library. It\n abstracts the collective library. It holds the global information and\n resources associated  with the library. The library handle cannot be passed\n from one library instance to another."] pub type ucc_lib_h = * mut ucc_lib_info ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n @brief UCC context\n\n The UCC context is an opaque handle to abstract the network resources for\n collective operations. The network resources could be either software or\n hardware. Based on the type of the context, the resources can be shared or\n either be exclusively used. The UCC context is required but not sufficient to\n execute a collective operation."] pub type ucc_context_h = * mut ucc_context ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_TEAM_DT\n @brief UCC team handle\n\n The UCC team handle is an opaque handle created by the library. It abstracts\n the group resources required for the collective operations and participants\n of the collective operation. The participants of the collective operation can\n be an OS process or thread."] pub type ucc_team_h = * mut ucc_team ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective request handle\n\n The UCC request handle is an opaque handle created by the library during the\n invocation of the collective operation. The request may be used to learn the\n status of the collective operation, progress, or complete the collective\n operation."] pub type ucc_coll_req_h = * mut ucc_coll_req ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_req { pub status : ucc_status_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_req"] [:: std :: mem :: size_of :: < ucc_coll_req > () - 4usize] ; ["Alignment of ucc_coll_req"] [:: std :: mem :: align_of :: < ucc_coll_req > () - 4usize] ; ["Offset of field: ucc_coll_req::status"] [:: std :: mem :: offset_of ! (ucc_coll_req , status) - 0usize] ; } ; pub type ucc_coll_req_t = ucc_coll_req ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_callback { pub cb : :: std :: option :: Option < unsafe extern "C" fn (data : * mut :: std :: os :: raw :: c_void , status : ucc_status_t) > , pub data : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_callback"] [:: std :: mem :: size_of :: < ucc_coll_callback > () - 16usize] ; ["Alignment of ucc_coll_callback"] [:: std :: mem :: align_of :: < ucc_coll_callback > () - 8usize] ; ["Offset of field: ucc_coll_callback::cb"] [:: std :: mem :: offset_of ! (ucc_coll_callback , cb) - 0usize] ; ["Offset of field: ucc_coll_callback::data"] [:: std :: mem :: offset_of ! (ucc_coll_callback , data) - 8usize] ; } ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief UCC collective completion callback\n\n The callback is invoked whenever the collective operation is completed.\n It is not allowed to call UCC APIs from the completion callback except\n for @ref ucc_collective_finalize."] pub type ucc_coll_callback_t = ucc_coll_callback ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_handle { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_COLLECTIVES\n @brief UCC memory handle\n\n The UCC memory handle is an opaque handle created by the library representing\n the buffer and address."] pub type ucc_mem_h = * mut ucc_mem_handle ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_LIB_INIT_DT\n\n @brief UCC library configuration handle"] pub type ucc_lib_config_h = * mut ucc_lib_config ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_config { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief UCC context configuration handle"] pub type ucc_context_config_h = * mut ucc_context_config ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Count datatype to support both small (32 bit) and large counts (64 bit)"] pub type ucc_count_t = u64 ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype to support both small (32 bit) and large address offsets (64 bit)"] pub type ucc_aint_t = u64 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_CONFIG : ucc_config_print_flags_t = 1 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HEADER : ucc_config_print_flags_t = 2 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_DOC : ucc_config_print_flags_t = 4 ; pub const ucc_config_print_flags_t_UCC_CONFIG_PRINT_HIDDEN : ucc_config_print_flags_t = 8 ; # [doc = " @ingroup UCC_UTILS\n @brief Print configurations"] pub type ucc_config_print_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_COLLECTIVES_DT\n @brief Datatype for collective tags"] pub type ucc_coll_id_t = u16 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_p2p_conn_t = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_h = * mut :: std :: os :: raw :: c_void ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_context_addr_len_t = usize ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee { _unused : [u8 ; 0] , } # [doc = " @ingroup UCC_EVENT_DT\n @brief UCC execution engine handle\n\n The UCC execution engine handle is an opaque handle created by the library representing\n the execution context and related queues."] pub type ucc_ee_h = * mut ucc_ee ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_dt_generic { _unused : [u8 ; 0] , } pub type ucc_dt_generic_t = ucc_dt_generic ; pub const ucc_dt_type_t_UCC_DATATYPE_PREDEFINED : ucc_dt_type_t = 0 ; pub const ucc_dt_type_t_UCC_DATATYPE_GENERIC : ucc_dt_type_t = 1 ; pub const ucc_dt_type_t_UCC_DATATYPE_SHIFT : ucc_dt_type_t = 3 ; pub const ucc_dt_type_t_UCC_DATATYPE_CLASS_MASK : ucc_dt_type_t = 7 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Helper enum for generic/predefined datatype representation\n"] pub type ucc_dt_type_t = :: std :: os :: raw :: c_uint ; pub type __gnuc_va_list = __builtin_va_list ; # [repr (C)] # [derive (Copy , Clone)] pub struct __mbstate_t { pub __count : :: std :: os :: raw :: c_int , pub __value : __mbstate_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union __mbstate_t__bindgen_ty_1 { pub __wch : :: std :: os :: raw :: c_uint , pub __wchb : [:: std :: os :: raw :: c_char ; 4usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Alignment of __mbstate_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < __mbstate_t__bindgen_ty_1 > () - 4usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wch) - 0usize] ; ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"] [:: std :: mem :: offset_of ! (__mbstate_t__bindgen_ty_1 , __wchb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __mbstate_t"] [:: std :: mem :: size_of :: < __mbstate_t > () - 8usize] ; ["Alignment of __mbstate_t"] [:: std :: mem :: align_of :: < __mbstate_t > () - 4usize] ; ["Offset of field: __mbstate_t::__count"] [:: std :: mem :: offset_of ! (__mbstate_t , __count) - 0usize] ; ["Offset of field: __mbstate_t::__value"] [:: std :: mem :: offset_of ! (__mbstate_t , __value) - 4usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos_t { pub __pos : __off_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos_t"] [:: std :: mem :: size_of :: < _G_fpos_t > () - 16usize] ; ["Alignment of _G_fpos_t"] [:: std :: mem :: align_of :: < _G_fpos_t > () - 8usize] ; ["Offset of field: _G_fpos_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos_t , __pos) - 0usize] ; ["Offset of field: _G_fpos_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos_t , __state) - 8usize] ; } ; pub type __fpos_t = _G_fpos_t ; # [repr (C)] # [derive (Copy , Clone)] pub struct _G_fpos64_t { pub __pos : __off64_t , pub __state : __mbstate_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _G_fpos64_t"] [:: std :: mem :: size_of :: < _G_fpos64_t > () - 16usize] ; ["Alignment of _G_fpos64_t"] [:: std :: mem :: align_of :: < _G_fpos64_t > () - 8usize] ; ["Offset of field: _G_fpos64_t::__pos"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __pos) - 0usize] ; ["Offset of field: _G_fpos64_t::__state"] [:: std :: mem :: offset_of ! (_G_fpos64_t , __state) - 8usize] ; } ; pub type __fpos64_t = _G_fpos64_t ; pub type __FILE = _IO_FILE ; pub type FILE = _IO_FILE ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_marker { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_codecvt { _unused : [u8 ; 0] , } # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_wide_data { _unused : [u8 ; 0] , } pub type _IO_lock_t = :: std :: os :: raw :: c_void ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_FILE { pub _flags : :: std :: os :: raw :: c_int , pub _IO_read_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_read_end : * mut :: std :: os :: raw :: c_char , pub _IO_read_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_base : * mut :: std :: os :: raw :: c_char , pub _IO_write_ptr : * mut :: std :: os :: raw :: c_char , pub _IO_write_end : * mut :: std :: os :: raw :: c_char , pub _IO_buf_base : * mut :: std :: os :: raw :: c_char , pub _IO_buf_end : * mut :: std :: os :: raw :: c_char , pub _IO_save_base : * mut :: std :: os :: raw :: c_char , pub _IO_backup_base : * mut :: std :: os :: raw :: c_char , pub _IO_save_end : * mut :: std :: os :: raw :: c_char , pub _markers : * mut _IO_marker , pub _chain : * mut _IO_FILE , pub _fileno : :: std :: os :: raw :: c_int , pub _bitfield_align_1 : [u32 ; 0] , pub _bitfield_1 : __BindgenBitfieldUnit < [u8 ; 3usize] > , pub _short_backupbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _old_offset : __off_t , pub _cur_column : :: std :: os :: raw :: c_ushort , pub _vtable_offset : :: std :: os :: raw :: c_schar , pub _shortbuf : [:: std :: os :: raw :: c_char ; 1usize] , pub _lock : * mut _IO_lock_t , pub _offset : __off64_t , pub _codecvt : * mut _IO_codecvt , pub _wide_data : * mut _IO_wide_data , pub _freeres_list : * mut _IO_FILE , pub _freeres_buf : * mut :: std :: os :: raw :: c_void , pub _prevchain : * mut * mut _IO_FILE , pub _mode : :: std :: os :: raw :: c_int , pub _unused3 : :: std :: os :: raw :: c_int , pub _total_written : __uint64_t , pub _unused2 : [:: std :: os :: raw :: c_char ; 8usize] , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_FILE"] [:: std :: mem :: size_of :: < _IO_FILE > () - 216usize] ; ["Alignment of _IO_FILE"] [:: std :: mem :: align_of :: < _IO_FILE > () - 8usize] ; ["Offset of field: _IO_FILE::_flags"] [:: std :: mem :: offset_of ! (_IO_FILE , _flags) - 0usize] ; ["Offset of field: _IO_FILE::_IO_read_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_ptr) - 8usize] ; ["Offset of field: _IO_FILE::_IO_read_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_end) - 16usize] ; ["Offset of field: _IO_FILE::_IO_read_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_read_base) - 24usize] ; ["Offset of field: _IO_FILE::_IO_write_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_base) - 32usize] ; ["Offset of field: _IO_FILE::_IO_write_ptr"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_ptr) - 40usize] ; ["Offset of field: _IO_FILE::_IO_write_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_write_end) - 48usize] ; ["Offset of field: _IO_FILE::_IO_buf_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_base) - 56usize] ; ["Offset of field: _IO_FILE::_IO_buf_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_buf_end) - 64usize] ; ["Offset of field: _IO_FILE::_IO_save_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_base) - 72usize] ; ["Offset of field: _IO_FILE::_IO_backup_base"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_backup_base) - 80usize] ; ["Offset of field: _IO_FILE::_IO_save_end"] [:: std :: mem :: offset_of ! (_IO_FILE , _IO_save_end) - 88usize] ; ["Offset of field: _IO_FILE::_markers"] [:: std :: mem :: offset_of ! (_IO_FILE , _markers) - 96usize] ; ["Offset of field: _IO_FILE::_chain"] [:: std :: mem :: offset_of ! (_IO_FILE , _chain) - 104usize] ; ["Offset of field: _IO_FILE::_fileno"] [:: std :: mem :: offset_of ! (_IO_FILE , _fileno) - 112usize] ; ["Offset of field: _IO_FILE::_short_backupbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _short_backupbuf) - 119usize] ; ["Offset of field: _IO_FILE::_old_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _old_offset) - 120usize] ; ["Offset of field: _IO_FILE::_cur_column"] [:: std :: mem :: offset_of ! (_IO_FILE , _cur_column) - 128usize] ; ["Offset of field: _IO_FILE::_vtable_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _vtable_offset) - 130usize] ; ["Offset of field: _IO_FILE::_shortbuf"] [:: std :: mem :: offset_of ! (_IO_FILE , _shortbuf) - 131usize] ; ["Offset of field: _IO_FILE::_lock"] [:: std :: mem :: offset_of ! (_IO_FILE , _lock) - 136usize] ; ["Offset of field: _IO_FILE::_offset"] [:: std :: mem :: offset_of ! (_IO_FILE , _offset) - 144usize] ; ["Offset of field: _IO_FILE::_codecvt"] [:: std :: mem :: offset_of ! (_IO_FILE , _codecvt) - 152usize] ; ["Offset of field: _IO_FILE::_wide_data"] [:: std :: mem :: offset_of ! (_IO_FILE , _wide_data) - 160usize] ; ["Offset of field: _IO_FILE::_freeres_list"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_list) - 168usize] ; ["Offset of field: _IO_FILE::_freeres_buf"] [:: std :: mem :: offset_of ! (_IO_FILE , _freeres_buf) - 176usize] ; ["Offset of field: _IO_FILE::_prevchain"] [:: std :: mem :: offset_of ! (_IO_FILE , _prevchain) - 184usize] ; ["Offset of field: _IO_FILE::_mode"] [:: std :: mem :: offset_of ! (_IO_FILE , _mode) - 192usize] ; ["Offset of field: _IO_FILE::_unused3"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused3) - 196usize] ; ["Offset of field: _IO_FILE::_total_written"] [:: std :: mem :: offset_of ! (_IO_FILE , _total_written) - 200usize] ; ["Offset of field: _IO_FILE::_unused2"] [:: std :: mem :: offset_of ! (_IO_FILE , _unused2) - 208usize] ; } ; impl _IO_FILE { # [inline] pub fn _flags2 (& self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (self . _bitfield_1 . get (0usize , 24u8) as u32) } } # [inline] pub fn set__flags2 (& mut self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; self . _bitfield_1 . set (0usize , 24u8 , val as u64) } } # [inline] pub unsafe fn _flags2_raw (this : * const Self) -> :: std :: os :: raw :: c_int { unsafe { :: std :: mem :: transmute (< __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_get (:: std :: ptr :: addr_of ! ((* this) . _bitfield_1) , 0usize , 24u8 ,) as u32) } } # [inline] pub unsafe fn set__flags2_raw (this : * mut Self , val : :: std :: os :: raw :: c_int) { unsafe { let val : u32 = :: std :: mem :: transmute (val) ; < __BindgenBitfieldUnit < [u8 ; 3usize] > > :: raw_set (:: std :: ptr :: addr_of_mut ! ((* this) . _bitfield_1) , 0usize , 24u8 , val as u64 ,) } } # [inline] pub fn new_bitfield_1 (_flags2 : :: std :: os :: raw :: c_int) -> __BindgenBitfieldUnit < [u8 ; 3usize] > { let mut __bindgen_bitfield_unit : __BindgenBitfieldUnit < [u8 ; 3usize] > = Default :: default () ; __bindgen_bitfield_unit . set (0usize , 24u8 , { let _flags2 : u32 = unsafe { i32::cast_unsigned (_flags2) } ; _flags2 as u64 }) ; __bindgen_bitfield_unit } } pub type cookie_read_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * mut :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_write_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __buf : * const :: std :: os :: raw :: c_char , __nbytes : usize) -> __ssize_t > ; pub type cookie_seek_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void , __pos : * mut __off64_t , __w : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int > ; pub type cookie_close_function_t = :: std :: option :: Option < unsafe extern "C" fn (__cookie : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct _IO_cookie_io_functions_t { pub read : cookie_read_function_t , pub write : cookie_write_function_t , pub seek : cookie_seek_function_t , pub close : cookie_close_function_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of _IO_cookie_io_functions_t"] [:: std :: mem :: size_of :: < _IO_cookie_io_functions_t > () - 32usize] ; ["Alignment of _IO_cookie_io_functions_t"] [:: std :: mem :: align_of :: < _IO_cookie_io_functions_t > () - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::read"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , read) - 0usize] ; ["Offset of field: _IO_cookie_io_functions_t::write"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , write) - 8usize] ; ["Offset of field: _IO_cookie_io_functions_t::seek"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , seek) - 16usize] ; ["Offset of field: _IO_cookie_io_functions_t::close"] [:: std :: mem :: offset_of ! (_IO_cookie_io_functions_t , close) - 24usize] ; } ; pub type cookie_io_functions_t = _IO_cookie_io_functions_t ; pub type va_list = __gnuc_va_list ; pub type off_t = __off_t ; pub type fpos_t = __fpos_t ; unsafe extern "C" { pub static mut stdin : * mut FILE ; } unsafe extern "C" { pub static mut stdout : * mut FILE ; } unsafe extern "C" { pub static mut stderr : * mut FILE ; } unsafe extern "C" { pub fn remove (__filename : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn rename (__old : * const :: std :: os :: raw :: c_char , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn renameat (__oldfd : :: std :: os :: raw :: c_int , __old : * const :: std :: os :: raw :: c_char , __newfd : :: std :: os :: raw :: c_int , __new : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn tmpfile () -> * mut FILE ; } unsafe extern "C" { pub fn tmpnam (arg1 : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tmpnam_r (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn tempnam (__dir : * const :: std :: os :: raw :: c_char , __pfx : * const :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn fflush (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fflush_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn freopen (__filename : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> * mut FILE ; } unsafe extern "C" { pub fn fdopen (__fd : :: std :: os :: raw :: c_int , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn fopencookie (__magic_cookie : * mut :: std :: os :: raw :: c_void , __modes : * const :: std :: os :: raw :: c_char , __io_funcs : cookie_io_functions_t) -> * mut FILE ; } unsafe extern "C" { pub fn fmemopen (__s : * mut :: std :: os :: raw :: c_void , __len : usize , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn open_memstream (__bufloc : * mut * mut :: std :: os :: raw :: c_char , __sizeloc : * mut usize) -> * mut FILE ; } unsafe extern "C" { pub fn setbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn setvbuf (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __modes : :: std :: os :: raw :: c_int , __n : usize) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn setbuffer (__stream : * mut FILE , __buf : * mut :: std :: os :: raw :: c_char , __size : usize) ; } unsafe extern "C" { pub fn setlinebuf (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fprintf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn printf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfprintf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vprintf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsprintf (__s : * mut :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn snprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsnprintf (__s : * mut :: std :: os :: raw :: c_char , __maxlen : :: std :: os :: raw :: c_ulong , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vasprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __f : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn asprintf (__ptr : * mut * mut :: std :: os :: raw :: c_char , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vdprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn dprintf (__fd : :: std :: os :: raw :: c_int , __fmt : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fscanf (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn scanf (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn sscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } pub type __cfloat128 = __BindgenComplex < u128 > ; pub type _Float128 = u128 ; pub type _Float32 = f32 ; pub type _Float64 = f64 ; pub type _Float32x = f64 ; pub type _Float64x = u128 ; unsafe extern "C" { # [link_name = "\u{1}__isoc99_fscanf"] pub fn fscanf1 (__stream : * mut FILE , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_scanf"] pub fn scanf1 (__format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_sscanf"] pub fn sscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , ...) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vfscanf (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vscanf (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn vsscanf (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vfscanf"] pub fn vfscanf1 (__s : * mut FILE , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vscanf"] pub fn vscanf1 (__format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { # [link_name = "\u{1}__isoc99_vsscanf"] pub fn vsscanf1 (__s : * const :: std :: os :: raw :: c_char , __format : * const :: std :: os :: raw :: c_char , __arg : * mut __va_list_tag) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getchar_unlocked () -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgetc_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fputc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putc_unlocked (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putchar_unlocked (__c : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn getw (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn putw (__w : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fgets (__s : * mut :: std :: os :: raw :: c_char , __n : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn __getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getdelim (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __delimiter : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn getline (__lineptr : * mut * mut :: std :: os :: raw :: c_char , __n : * mut usize , __stream : * mut FILE) -> __ssize_t ; } unsafe extern "C" { pub fn fputs (__s : * const :: std :: os :: raw :: c_char , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn puts (__s : * const :: std :: os :: raw :: c_char) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ungetc (__c : :: std :: os :: raw :: c_int , __stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fread (__ptr : * mut :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __stream : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fwrite (__ptr : * const :: std :: os :: raw :: c_void , __size : :: std :: os :: raw :: c_ulong , __n : :: std :: os :: raw :: c_ulong , __s : * mut FILE) -> :: std :: os :: raw :: c_ulong ; } unsafe extern "C" { pub fn fread_unlocked (__ptr : * mut :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fwrite_unlocked (__ptr : * const :: std :: os :: raw :: c_void , __size : usize , __n : usize , __stream : * mut FILE) -> usize ; } unsafe extern "C" { pub fn fseek (__stream : * mut FILE , __off : :: std :: os :: raw :: c_long , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftell (__stream : * mut FILE) -> :: std :: os :: raw :: c_long ; } unsafe extern "C" { pub fn rewind (__stream : * mut FILE) ; } unsafe extern "C" { pub fn fseeko (__stream : * mut FILE , __off : __off_t , __whence : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ftello (__stream : * mut FILE) -> __off_t ; } unsafe extern "C" { pub fn fgetpos (__stream : * mut FILE , __pos : * mut fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fsetpos (__stream : * mut FILE , __pos : * const fpos_t) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn clearerr_unlocked (__stream : * mut FILE) ; } unsafe extern "C" { pub fn feof_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn ferror_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn perror (__s : * const :: std :: os :: raw :: c_char) ; } unsafe extern "C" { pub fn fileno (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn fileno_unlocked (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn pclose (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn popen (__command : * const :: std :: os :: raw :: c_char , __modes : * const :: std :: os :: raw :: c_char) -> * mut FILE ; } unsafe extern "C" { pub fn ctermid (__s : * mut :: std :: os :: raw :: c_char) -> * mut :: std :: os :: raw :: c_char ; } unsafe extern "C" { pub fn flockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn ftrylockfile (__stream : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn funlockfile (__stream : * mut FILE) ; } unsafe extern "C" { pub fn __uflow (arg1 : * mut FILE) -> :: std :: os :: raw :: c_int ; } unsafe extern "C" { pub fn __overflow (arg1 : * mut FILE , arg2 : :: std :: os :: raw :: c_int) -> :: std :: os :: raw :: c_int ; } pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHER : ucc_coll_type_t = 1 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLGATHERV : ucc_coll_type_t = 2 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLREDUCE : ucc_coll_type_t = 4 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALL : ucc_coll_type_t = 8 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_ALLTOALLV : ucc_coll_type_t = 16 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BARRIER : ucc_coll_type_t = 32 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_BCAST : ucc_coll_type_t = 64 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANIN : ucc_coll_type_t = 128 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_FANOUT : ucc_coll_type_t = 256 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHER : ucc_coll_type_t = 512 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_GATHERV : ucc_coll_type_t = 1024 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE : ucc_coll_type_t = 2048 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTER : ucc_coll_type_t = 4096 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_REDUCE_SCATTERV : ucc_coll_type_t = 8192 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTER : ucc_coll_type_t = 16384 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_SCATTERV : ucc_coll_type_t = 32768 ; pub const ucc_coll_type_t_UCC_COLL_TYPE_LAST : ucc_coll_type_t = 32769 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective operations\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_type_t represents the collective operations supported by the\n  UCC library. The exact set of supported collective operations depends on\n  UCC build flags, runtime configuration and available communication transports.\n\n  @endparblock\n"] pub type ucc_coll_type_t = :: std :: os :: raw :: c_uint ; # [doc = "< Default system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_HOST : ucc_memory_type = 0 ; # [doc = "< NVIDIA CUDA memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA : ucc_memory_type = 1 ; # [doc = "< NVIDIA CUDA managed memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_CUDA_MANAGED : ucc_memory_type = 2 ; # [doc = "< AMD ROCM memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM : ucc_memory_type = 3 ; # [doc = "< AMD ROCM managed system memory"] pub const ucc_memory_type_UCC_MEMORY_TYPE_ROCM_MANAGED : ucc_memory_type = 4 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_LAST : ucc_memory_type = 5 ; pub const ucc_memory_type_UCC_MEMORY_TYPE_UNKNOWN : ucc_memory_type = 5 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_memory_type = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub use self :: ucc_memory_type as ucc_memory_type_t ; # [doc = "  @ingroup UCC_DATATYPE\n\n  @brief Enumeration representing the UCC library's datatype\n\n  @parblock\n\n  Description\n\n  @ref ucc_datatype_t represents the datatypes supported by the UCC library’s\n  collective and reduction operations. The predefined operations\n  are signed and unsigned integers of various sizes, float 16, 32, and 64, and\n  user-defined datatypes. User-defined datatypes are created using\n  @ref ucc_dt_create_generic interface and can support user-defined reduction\n  operations. Predefined reduction operations can be used only with\n  predefined datatypes.\n\n  @endparblock\n"] pub type ucc_datatype_t = u64 ; pub const ucc_generic_dt_ops_field_UCC_GENERIC_DT_OPS_FIELD_FLAGS : ucc_generic_dt_ops_field = 1 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_generic_dt_ops_field = :: std :: os :: raw :: c_uint ; # [doc = "< If set, the created datatype\nrepresents a contiguous memory\nregion with the size specified\nin @ref ucc_generic_dt_ops.contig_size\nfield of @ref ucc_generic_dt_ops"] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_CONTIG : ucc_generic_dt_ops_flags_t = 1 ; # [doc = "< If set, the created datatype\nhas user-defined reduction\noperation associated with it.\nreduce.cb and reduce.ctx fields\nof @ref ucc_generic_dt_ops must\nbe initialized. Collective operations\nthat involve reduction (allreduce,\nreduce, reduce_scatter/v) can use\nuser-defined data-types only when\nthis flag is set."] pub const ucc_generic_dt_ops_flags_t_UCC_GENERIC_DT_OPS_FLAG_REDUCE : ucc_generic_dt_ops_flags_t = 2 ; # [doc = " @ingroup UCC_DATATYPE\n @brief Flags that can be specified for generic datatype\n"] pub type ucc_generic_dt_ops_flags_t = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_reduce_cb_params { pub mask : u64 , pub src1 : * mut :: std :: os :: raw :: c_void , pub src2 : * mut :: std :: os :: raw :: c_void , pub dst : * mut :: std :: os :: raw :: c_void , pub n_vectors : usize , pub count : usize , pub stride : usize , pub dt : * mut ucc_dt_generic_t , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_reduce_cb_params"] [:: std :: mem :: size_of :: < ucc_reduce_cb_params > () - 72usize] ; ["Alignment of ucc_reduce_cb_params"] [:: std :: mem :: align_of :: < ucc_reduce_cb_params > () - 8usize] ; ["Offset of field: ucc_reduce_cb_params::mask"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , mask) - 0usize] ; ["Offset of field: ucc_reduce_cb_params::src1"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src1) - 8usize] ; ["Offset of field: ucc_reduce_cb_params::src2"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , src2) - 16usize] ; ["Offset of field: ucc_reduce_cb_params::dst"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dst) - 24usize] ; ["Offset of field: ucc_reduce_cb_params::n_vectors"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , n_vectors) - 32usize] ; ["Offset of field: ucc_reduce_cb_params::count"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , count) - 40usize] ; ["Offset of field: ucc_reduce_cb_params::stride"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , stride) - 48usize] ; ["Offset of field: ucc_reduce_cb_params::dt"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , dt) - 56usize] ; ["Offset of field: ucc_reduce_cb_params::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_reduce_cb_params , cb_ctx) - 64usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief Descriptor of user-defined reduction callback\n\n This structure is the argument to the reduce.cb callback. It must implement\n the reduction of n_vectors + 1 data vectors each containing \"count\" elements.\n First vector is \"src1\", other n_vectors have start address\n v_j = src2 + count * dt_extent * stride * j.\n The result is stored in dst, so that\n dst[i] = src1[i] + v0[i] + v1[i] + ... +v_nvectors[i],\n for i in [0:count), where \"+\" represents user-defined reduction of 2 elements"] pub type ucc_reduce_cb_params_t = ucc_reduce_cb_params ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops { pub mask : u64 , pub flags : u64 , # [doc = "< size of the datatype if @ref UCC_GENERIC_DT_OPS_FLAG_CONTIG is set"] pub contig_size : usize , # [doc = " @ingroup UCC_DATATYPE\n @brief Start a packing request.\n\n The pointer refers to application defined start-to-pack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to pack.\n @param [in]  count          Number of elements to pack into the buffer.\n\n @return  A custom state that is passed to the subsequent\n          @ref ucc_generic_dt_ops::pack \"pack()\" routine."] pub start_pack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * const :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Start an unpacking request.\n\n The pointer refers to application defined start-to-unpack routine.\n\n @param [in]  context        User-defined context.\n @param [in]  buffer         Buffer to unpack to.\n @param [in]  count          Number of elements to unpack in the buffer.\n\n @return  A custom state that is passed later to the subsequent\n          @ref ucc_generic_dt_ops::unpack \"unpack()\" routine."] pub start_unpack : :: std :: option :: Option < unsafe extern "C" fn (context : * mut :: std :: os :: raw :: c_void , buffer : * mut :: std :: os :: raw :: c_void , count : usize) -> * mut :: std :: os :: raw :: c_void > , # [doc = " @ingroup UCC_DATATYPE\n @brief Get the total size of packed data.\n\n The pointer refers to user defined routine that returns the size of data\n in a packed format.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n\n @return  The size of the data in a packed form."] pub packed_size : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Pack data.\n\n The pointer refers to application defined pack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\" routine.\n @param [in]  offset         Virtual offset in the output stream.\n @param [in]  dest           Destination buffer to pack the data.\n @param [in]  max_length     Maximum length to pack.\n\n @return The size of the data that was written to the destination buffer.\n         Must be less than or equal to @e max_length."] pub pack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , dest : * mut :: std :: os :: raw :: c_void , max_length : usize) -> usize > , # [doc = " @ingroup UCC_DATATYPE\n @brief Unpack data.\n\n The pointer refers to application defined unpack routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\" routine.\n @param [in]  offset         Virtual offset in the input stream.\n @param [in]  src            Source to unpack the data from.\n @param [in]  length         Length to unpack.\n\n @return UCC_OK or an error if unpacking failed."] pub unpack : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void , offset : usize , src : * const :: std :: os :: raw :: c_void , length : usize) -> ucc_status_t > , # [doc = " @ingroup UCC_DATATYPE\n @brief Finish packing/unpacking.\n\n The pointer refers to application defined finish routine.\n\n @param [in]  state          State as returned by\n                             @ref ucc_generic_dt_ops::start_pack\n                             \"start_pack()\"\n                             and\n                             @ref ucc_generic_dt_ops::start_unpack\n                             \"start_unpack()\"\n                             routines."] pub finish : :: std :: option :: Option < unsafe extern "C" fn (state : * mut :: std :: os :: raw :: c_void) > , pub reduce : ucc_generic_dt_ops__bindgen_ty_1 , } # [doc = " @ingroup UCC_DATATYPE\n @brief User-defined reduction callback\n\n The pointer refers to user-defined reduction routine.\n\n @param [in]  params reduction descriptor"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_generic_dt_ops__bindgen_ty_1 { pub cb : :: std :: option :: Option < unsafe extern "C" fn (params : * const ucc_reduce_cb_params_t) -> ucc_status_t > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_generic_dt_ops__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb) - 0usize] ; ["Offset of field: ucc_generic_dt_ops__bindgen_ty_1::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops__bindgen_ty_1 , cb_ctx) - 8usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_generic_dt_ops"] [:: std :: mem :: size_of :: < ucc_generic_dt_ops > () - 88usize] ; ["Alignment of ucc_generic_dt_ops"] [:: std :: mem :: align_of :: < ucc_generic_dt_ops > () - 8usize] ; ["Offset of field: ucc_generic_dt_ops::mask"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , mask) - 0usize] ; ["Offset of field: ucc_generic_dt_ops::flags"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , flags) - 8usize] ; ["Offset of field: ucc_generic_dt_ops::contig_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , contig_size) - 16usize] ; ["Offset of field: ucc_generic_dt_ops::start_pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_pack) - 24usize] ; ["Offset of field: ucc_generic_dt_ops::start_unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , start_unpack) - 32usize] ; ["Offset of field: ucc_generic_dt_ops::packed_size"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , packed_size) - 40usize] ; ["Offset of field: ucc_generic_dt_ops::pack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , pack) - 48usize] ; ["Offset of field: ucc_generic_dt_ops::unpack"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , unpack) - 56usize] ; ["Offset of field: ucc_generic_dt_ops::finish"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , finish) - 64usize] ; ["Offset of field: ucc_generic_dt_ops::reduce"] [:: std :: mem :: offset_of ! (ucc_generic_dt_ops , reduce) - 72usize] ; } ; # [doc = " @ingroup UCC_DATATYPE\n @brief UCC generic data type descriptor\n\n This structure provides a generic datatype descriptor that is used to create\n user-defined datatypes."] pub type ucc_generic_dt_ops_t = ucc_generic_dt_ops ; unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Create a generic datatype.\n\n This routine creates a generic datatype object. The generic datatype is\n described by the @a ops @ref ucc_generic_dt_ops_t \"object\" which provides\n a table of routines defining the operations for generic datatype manipulation.\n Typically, generic datatypes are used for integration with datatype engines\n provided with MPI implementations (MPICH, Open MPI, etc). The application\n is responsible for releasing the @a datatype_p  object using\n @ref ucc_dt_destroy \"ucc_dt_destroy()\" routine.\n\n @param [in]  ops          Generic datatype function table as defined by\n                           @ref ucc_generic_dt_ops_t .\n @param [in]  context      Application defined context passed to this\n                           routine.  The context is passed as a parameter\n                           to the routines in the @a ops table.\n @param [out] datatype_p   A pointer to datatype object.\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_dt_create_generic (ops : * const ucc_generic_dt_ops_t , context : * mut :: std :: os :: raw :: c_void , datatype_p : * mut ucc_datatype_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_DATATYPE\n @brief Destroy generic datatype"] pub fn ucc_dt_destroy (datatype : ucc_datatype_t) ; } pub const ucc_reduction_op_t_UCC_OP_SUM : ucc_reduction_op_t = 0 ; pub const ucc_reduction_op_t_UCC_OP_PROD : ucc_reduction_op_t = 1 ; pub const ucc_reduction_op_t_UCC_OP_MAX : ucc_reduction_op_t = 2 ; pub const ucc_reduction_op_t_UCC_OP_MIN : ucc_reduction_op_t = 3 ; pub const ucc_reduction_op_t_UCC_OP_LAND : ucc_reduction_op_t = 4 ; pub const ucc_reduction_op_t_UCC_OP_LOR : ucc_reduction_op_t = 5 ; pub const ucc_reduction_op_t_UCC_OP_LXOR : ucc_reduction_op_t = 6 ; pub const ucc_reduction_op_t_UCC_OP_BAND : ucc_reduction_op_t = 7 ; pub const ucc_reduction_op_t_UCC_OP_BOR : ucc_reduction_op_t = 8 ; pub const ucc_reduction_op_t_UCC_OP_BXOR : ucc_reduction_op_t = 9 ; pub const ucc_reduction_op_t_UCC_OP_MAXLOC : ucc_reduction_op_t = 10 ; pub const ucc_reduction_op_t_UCC_OP_MINLOC : ucc_reduction_op_t = 11 ; pub const ucc_reduction_op_t_UCC_OP_AVG : ucc_reduction_op_t = 12 ; pub const ucc_reduction_op_t_UCC_OP_LAST : ucc_reduction_op_t = 13 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC reduction operations\n\n  @parblock\n\n\n  Description\n\n  @ref ucc_reduction_op_t  represents the UCC reduction operations. It is used by the\n  library initialization routine @ref ucc_init to request the operations expected by the user.\n  It is used by the @ref ucc_lib_attr_t to communicate the operations supported by\n  the library.\n\n  @endparblock\n"] pub type ucc_reduction_op_t = :: std :: os :: raw :: c_uint ; # [doc = "< Single-threaded library model"] pub const ucc_thread_mode_t_UCC_THREAD_SINGLE : ucc_thread_mode_t = 0 ; # [doc = "< Funnel thread model"] pub const ucc_thread_mode_t_UCC_THREAD_FUNNELED : ucc_thread_mode_t = 1 ; # [doc = "< Multithread library model"] pub const ucc_thread_mode_t_UCC_THREAD_MULTIPLE : ucc_thread_mode_t = 2 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the UCC library's thread model\n\n  @parblock\n\n  Description\n\n  @ref ucc_thread_mode_t is used to initialize the UCC library’s thread mode.\n  The UCC library can be configured in three thread modes UCC_THREAD_SINGLE,\n  UCC_THREAD_FUNNELED, and UCC_THREAD_MULTIPLE. In the UCC_THREAD_SINGLE\n  mode, the user program must not be multithreaded. In the UCC_THREAD_FUNNELED\n  mode, the user program may be multithreaded. However, all UCC interfaces\n  should be invoked from the same thread. In the UCC_THREAD_MULTIPLE mode, the\n  user program can be multithreaded and any thread may invoke the UCC\n  operations.\n\n  @endparblock\n"] pub type ucc_thread_mode_t = :: std :: os :: raw :: c_uint ; # [doc = "< Non-synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_NO_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 0 ; # [doc = "< Synchronous collectives"] pub const ucc_coll_sync_type_t_UCC_SYNC_COLLECTIVES : ucc_coll_sync_type_t = 1 ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Enumeration representing the collective synchronization model\n\n  @parblock\n\n  Description\n\n  @ref ucc_coll_sync_type_t represents the collective synchronization models.\n  Currently, it supports two synchronization models synchronous and\n  non-synchronous collective models. In the synchronous collective model, the\n  collective communication is not started until participants have not entered\n  the collective operation, and it is not completed until all participants have not\n  completed the collective. In the non-synchronous collective model, collective\n  communication can be started as soon as the participant enters the collective\n  operation and is completed as soon as it completes locally.\n\n  @endparblock\n"] pub type ucc_coll_sync_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_THREAD_MODE : ucc_lib_params_field = 1 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_COLL_TYPES : ucc_lib_params_field = 2 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_REDUCTION_TYPES : ucc_lib_params_field = 4 ; pub const ucc_lib_params_field_UCC_LIB_PARAM_FIELD_SYNC_TYPE : ucc_lib_params_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_THREAD_MODE : ucc_lib_attr_field = 1 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_COLL_TYPES : ucc_lib_attr_field = 2 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_REDUCTION_TYPES : ucc_lib_attr_field = 4 ; pub const ucc_lib_attr_field_UCC_LIB_ATTR_FIELD_SYNC_TYPE : ucc_lib_attr_field = 8 ; # [doc = "  @ingroup UCC_LIB_INIT_DT"] pub type ucc_lib_attr_field = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_params { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_params"] [:: std :: mem :: size_of :: < ucc_lib_params > () - 40usize] ; ["Alignment of ucc_lib_params"] [:: std :: mem :: align_of :: < ucc_lib_params > () - 8usize] ; ["Offset of field: ucc_lib_params::mask"] [:: std :: mem :: offset_of ! (ucc_lib_params , mask) - 0usize] ; ["Offset of field: ucc_lib_params::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_params , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_params::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , coll_types) - 16usize] ; ["Offset of field: ucc_lib_params::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_params , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_params , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the parameters to customize the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_params_t defines the parameters that can be used to customize\n  the library. The bits in \"mask\" bit array is defined by @ref\n  ucc_lib_params_field, which correspond to fields in structure @ref\n  ucc_lib_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_params_t = ucc_lib_params ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_lib_attr { pub mask : u64 , pub thread_mode : ucc_thread_mode_t , pub coll_types : u64 , pub reduction_types : u64 , pub sync_type : ucc_coll_sync_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_lib_attr"] [:: std :: mem :: size_of :: < ucc_lib_attr > () - 40usize] ; ["Alignment of ucc_lib_attr"] [:: std :: mem :: align_of :: < ucc_lib_attr > () - 8usize] ; ["Offset of field: ucc_lib_attr::mask"] [:: std :: mem :: offset_of ! (ucc_lib_attr , mask) - 0usize] ; ["Offset of field: ucc_lib_attr::thread_mode"] [:: std :: mem :: offset_of ! (ucc_lib_attr , thread_mode) - 8usize] ; ["Offset of field: ucc_lib_attr::coll_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , coll_types) - 16usize] ; ["Offset of field: ucc_lib_attr::reduction_types"] [:: std :: mem :: offset_of ! (ucc_lib_attr , reduction_types) - 24usize] ; ["Offset of field: ucc_lib_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_lib_attr , sync_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_LIB_INIT_DT\n\n  @brief Structure representing the attributes of the library\n\n  @parblock\n\n  Description\n\n  @ref ucc_lib_attr_t defines the attributes of the library. The bits in\n  \"mask\" bit array is defined by @ref ucc_lib_attr_field, which correspond to\n  fields in structure @ref ucc_lib_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_lib_attr_t = ucc_lib_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_read routine provides a method to read library\n  configuration from the environment and create configuration descriptor.\n\n  @param [out] env_prefix    If not NULL, the routine searches for the\n                             environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n                             routines search for the environment variables that start with the prefix @\n                             UCC_.\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist, it will be ignored\n                             and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_lib_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_read (env_prefix : * const :: std :: os :: raw :: c_char , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_lib_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_release routine releases the configuration descriptor\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref\n                            ucc_lib_config_h.\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n\n  @endparblock\n\n  @ref ucc_lib_config_read \"ucc_lib_config_read()\" routine.\n"] pub fn ucc_lib_config_release (config : ucc_lib_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_lib_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_lib_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_lib_config_print (config : ucc_lib_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_config_modify routine modifies the runtime configuration as described by the\n  descriptor.\n\n  @param [in] config   Pointer to the configuration descriptor to be modified\n  @param [in] name     Configuration variable to be modified\n  @param [in] value    Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_lib_config_modify routine sets the value of identifier \"name\"\n  to \"value\".\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_config_modify (config : ucc_lib_config_h , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version.\n\n This routine returns the UCC library version.\n\n @param [out] major_version       Filled with library major version.\n @param [out] minor_version       Filled with library minor version.\n @param [out] release_number      Filled with library release number."] pub fn ucc_get_version (major_version : * mut :: std :: os :: raw :: c_uint , minor_version : * mut :: std :: os :: raw :: c_uint , release_number : * mut :: std :: os :: raw :: c_uint) ; } unsafe extern "C" { # [doc = " @ingroup UCC_LIB\n @brief Get UCC library version as a string.\n\n This routine returns the UCC library version as a string which consists of:\n \"major.minor.release\"."] pub fn ucc_get_version_string () -> * const :: std :: os :: raw :: c_char ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB_INTERNAL\n\n  @brief The @ref ucc_init_version is an internal routine that checks\n  compatibility with a particular UCC API version.\n  @ref ucc_init should be used to create the UCC library handle."] pub fn ucc_init_version (api_major_version : :: std :: os :: raw :: c_uint , api_minor_version : :: std :: os :: raw :: c_uint , params : * const ucc_lib_params_t , config : ucc_lib_config_h , lib_p : * mut ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_finalize routine finalizes the UCC library.\n\n  @param [in] lib_p   Handle to ucc_lib_h\n                      \"UCC library\".\n\n  @parblock\n\n  @b Description\n\n  A local operation to release the resources and\n  cleanup. All participants that invoked @ref ucc_init should call this\n  routine.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_finalize (lib_p : ucc_lib_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_LIB\n\n  @brief The @ref ucc_lib_get_attr routine queries the library attributes.\n\n  @param [out]  lib_attr   Library attributes\n  @param [in]   lib_p      Input library object\n\n  @parblock\n\n  @b Description\n\n  A query operation to get the attributes of the library object. The\n  attributes are library configured values and reflect the choices made by the\n  library implementation.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_lib_get_attr (lib_p : ucc_lib_h , lib_attr : * mut ucc_lib_attr_t) -> ucc_status_t ; } pub const ucc_context_type_t_UCC_CONTEXT_EXCLUSIVE : ucc_context_type_t = 0 ; pub const ucc_context_type_t_UCC_CONTEXT_SHARED : ucc_context_type_t = 1 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_TYPE : ucc_context_params_field = 1 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE : ucc_context_params_field = 2 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_OOB : ucc_context_params_field = 4 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_ID : ucc_context_params_field = 8 ; pub const ucc_context_params_field_UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS : ucc_context_params_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_TYPE : ucc_context_attr_field = 1 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE : ucc_context_attr_field = 2 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR : ucc_context_attr_field = 4 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN : ucc_context_attr_field = 8 ; pub const ucc_context_attr_field_UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE : ucc_context_attr_field = 16 ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_context_attr_field = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_oob_coll { pub allgather : :: std :: option :: Option < unsafe extern "C" fn (src_buf : * mut :: std :: os :: raw :: c_void , recv_buf : * mut :: std :: os :: raw :: c_void , size : usize , allgather_info : * mut :: std :: os :: raw :: c_void , request : * mut * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub coll_info : * mut :: std :: os :: raw :: c_void , # [doc = "< Number of endpoints participating in the\noob operation (e.g., number of processes\nrepresenting a ucc team)"] pub n_oob_eps : u32 , # [doc = "< Integer value that represents the position\nof the calling processes in the given oob op:\nthe data specified by \"src_buf\" will be placed\nat the offset \"oob_ep*size\" in the \"recv_buf\".\noob_ep must be uniq at every calling process\nand should be in the range [0:n_oob_eps)."] pub oob_ep : u32 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_oob_coll"] [:: std :: mem :: size_of :: < ucc_oob_coll > () - 40usize] ; ["Alignment of ucc_oob_coll"] [:: std :: mem :: align_of :: < ucc_oob_coll > () - 8usize] ; ["Offset of field: ucc_oob_coll::allgather"] [:: std :: mem :: offset_of ! (ucc_oob_coll , allgather) - 0usize] ; ["Offset of field: ucc_oob_coll::req_test"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_test) - 8usize] ; ["Offset of field: ucc_oob_coll::req_free"] [:: std :: mem :: offset_of ! (ucc_oob_coll , req_free) - 16usize] ; ["Offset of field: ucc_oob_coll::coll_info"] [:: std :: mem :: offset_of ! (ucc_oob_coll , coll_info) - 24usize] ; ["Offset of field: ucc_oob_coll::n_oob_eps"] [:: std :: mem :: offset_of ! (ucc_oob_coll , n_oob_eps) - 32usize] ; ["Offset of field: ucc_oob_coll::oob_ep"] [:: std :: mem :: offset_of ! (ucc_oob_coll , oob_ep) - 36usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_oob_coll_t = ucc_oob_coll ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_context_oob_coll_t = ucc_oob_coll_t ; # [doc = " @ingroup UCC_CONTEXT_DT\n\n @brief OOB collective operation for creating the context"] pub type ucc_team_oob_coll_t = ucc_oob_coll_t ; # [doc = "  @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map { # [doc = "< the address of a buffer to be attached to a UCC context"] pub address : * mut :: std :: os :: raw :: c_void , # [doc = "< the length of the buffer"] pub len : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map"] [:: std :: mem :: size_of :: < ucc_mem_map > () - 16usize] ; ["Alignment of ucc_mem_map"] [:: std :: mem :: align_of :: < ucc_mem_map > () - 8usize] ; ["Offset of field: ucc_mem_map::address"] [:: std :: mem :: offset_of ! (ucc_mem_map , address) - 0usize] ; ["Offset of field: ucc_mem_map::len"] [:: std :: mem :: offset_of ! (ucc_mem_map , len) - 8usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_t = ucc_mem_map ; # [doc = " @ingroup UCC_CONTEXT_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_mem_map_params { # [doc = "< array of ucc_mem_map elements"] pub segments : * mut ucc_mem_map_t , # [doc = "< the number of ucc_mem_map elements"] pub n_segments : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_mem_map_params"] [:: std :: mem :: size_of :: < ucc_mem_map_params > () - 16usize] ; ["Alignment of ucc_mem_map_params"] [:: std :: mem :: align_of :: < ucc_mem_map_params > () - 8usize] ; ["Offset of field: ucc_mem_map_params::segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , segments) - 0usize] ; ["Offset of field: ucc_mem_map_params::n_segments"] [:: std :: mem :: offset_of ! (ucc_mem_map_params , n_segments) - 8usize] ; } ; # [doc = " @ingroup UCC_CONTEXT_DT"] pub type ucc_mem_map_params_t = ucc_mem_map_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_params { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub oob : ucc_context_oob_coll_t , pub ctx_id : u64 , pub mem_params : ucc_mem_map_params_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_params"] [:: std :: mem :: size_of :: < ucc_context_params > () - 80usize] ; ["Alignment of ucc_context_params"] [:: std :: mem :: align_of :: < ucc_context_params > () - 8usize] ; ["Offset of field: ucc_context_params::mask"] [:: std :: mem :: offset_of ! (ucc_context_params , mask) - 0usize] ; ["Offset of field: ucc_context_params::type_"] [:: std :: mem :: offset_of ! (ucc_context_params , type_) - 8usize] ; ["Offset of field: ucc_context_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_params , sync_type) - 12usize] ; ["Offset of field: ucc_context_params::oob"] [:: std :: mem :: offset_of ! (ucc_context_params , oob) - 16usize] ; ["Offset of field: ucc_context_params::ctx_id"] [:: std :: mem :: offset_of ! (ucc_context_params , ctx_id) - 56usize] ; ["Offset of field: ucc_context_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_context_params , mem_params) - 64usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing the parameters to customize the context\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_params_t defines the parameters that can be used to\n  customize the context. The \"mask\" bit array fields are defined by @ref\n  ucc_context_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_context_params_field, which correspond to fields in structure @ref\n  ucc_context_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n  @endparblock\n"] pub type ucc_context_params_t = ucc_context_params ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_context_attr { pub mask : u64 , pub type_ : ucc_context_type_t , pub sync_type : ucc_coll_sync_type_t , pub ctx_addr : ucc_context_addr_h , pub ctx_addr_len : ucc_context_addr_len_t , pub global_work_buffer_size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_context_attr"] [:: std :: mem :: size_of :: < ucc_context_attr > () - 40usize] ; ["Alignment of ucc_context_attr"] [:: std :: mem :: align_of :: < ucc_context_attr > () - 8usize] ; ["Offset of field: ucc_context_attr::mask"] [:: std :: mem :: offset_of ! (ucc_context_attr , mask) - 0usize] ; ["Offset of field: ucc_context_attr::type_"] [:: std :: mem :: offset_of ! (ucc_context_attr , type_) - 8usize] ; ["Offset of field: ucc_context_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_context_attr , sync_type) - 12usize] ; ["Offset of field: ucc_context_attr::ctx_addr"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr) - 16usize] ; ["Offset of field: ucc_context_attr::ctx_addr_len"] [:: std :: mem :: offset_of ! (ucc_context_attr , ctx_addr_len) - 24usize] ; ["Offset of field: ucc_context_attr::global_work_buffer_size"] [:: std :: mem :: offset_of ! (ucc_context_attr , global_work_buffer_size) - 32usize] ; } ; # [doc = "  @ingroup UCC_CONTEXT_DT\n\n  @brief Structure representing context attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_context_attr_t defines the attributes of the context. The bits in\n  \"mask\" bit array is defined by @ref ucc_context_attr_field, which correspond to\n  fields in structure @ref ucc_context_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_context_attr_t = ucc_context_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief Routine reads the configuration information for contexts from the\n  runtime enviornment and creates the configuration descriptor.\n\n  @param [in]  lib_handle    Library handle\n  @param [in]  filename      If not NULL, read configuration values from the\n                             file defined by @e filename. If the file does not exist,\n                             it will be ignored and no error will be reported to the user.\n  @param [out] config        Pointer to configuration descriptor as defined by\n                             @ref ucc_context_config_h.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_config_read allocates the @ref ucc_lib_config_h handle and\n  fetches the configuration values from the run-time environment. The run-time\n  environment supported are environment variables or a configuration file. It uses\n  the env_prefix from @ref ucc_lib_config_read. If env_prefix is not NULL, the routine\n  searches for the environment variables with the prefix UCC_<env_prefix>. Otherwise, the\n  routines search for the environment variables that start with the prefix @ UCC_.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_read (lib_handle : ucc_lib_h , filename : * const :: std :: os :: raw :: c_char , config : * mut ucc_context_config_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_release routine releases the configuration descriptor.\n\n  @param [in] config        Pointer to the configuration descriptor to be released.\n                            Configuration descriptor as defined by @ref ucc_context_config_h\n\n  @parblock\n\n  @b Description\n\n  The routine releases the configuration descriptor that was allocated through\n  @ref ucc_context_config_read \"ucc_context_config_read()\" routine.\n\n  @endparblock\n"] pub fn ucc_context_config_release (config : ucc_context_config_h) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_print routine prints the configuration information\n\n  @param [in]  config        ucc_context_config_h \"Configuration descriptor\"\n                             to print.\n  @param [in]  stream        Output stream to print the configuration to.\n  @param [in]  title         Configuration title to print.\n  @param [in]  print_flags   Flags that control various printing options.\n\n  @parblock\n\n  @b Description\n\n  The routine prints the configuration information that is stored in\n  ucc_context_config_h \"configuration\" descriptor.\n\n  @endparblock\n"] pub fn ucc_context_config_print (config : ucc_context_config_h , stream : * mut FILE , title : * const :: std :: os :: raw :: c_char , print_flags : ucc_config_print_flags_t) ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_config_modify routine modifies the runtime configuration\n                  of UCC context (optionally for a given CLS)\n\n  @param [in] config    Pointer to the configuration descriptor to be modified\n  @param [in] component CL/TL component (e.g. \"tl/ucp\" or \"cl/basic\") or NULL.\nIf NULL then core context config is modified.\n  @param [in] name      Configuration variable to be modified\n  @param [in] value     Configuration value to set\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_config_modify routine sets the value of identifier \"name\"\n  to \"value\" for a specified CL.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_config_modify (config : ucc_context_config_h , component : * const :: std :: os :: raw :: c_char , name : * const :: std :: os :: raw :: c_char , value : * const :: std :: os :: raw :: c_char) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_create routine creates the context handle.\n\n  @param [in]   lib_handle  Library handle\n  @param [in]   params      Customizations for the communication context\n  @param [in]   config      Configuration for the communication context to read\n                            from environment\n  @param [out]  context     Pointer to the newly created communication context\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_create creates the context and @ref ucc_context_destroy\n  releases the resources and destroys the context state. The creation of\n  context does not necessarily indicate its readiness to be used for\n  collective or other group operations. On success, the context handle will be\n  created and ucc_status_t will return UCC_OK. On error, the context object\n  will not be created and corresponding error code as defined by\n  @ref ucc_status_t is returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_create (lib_handle : ucc_lib_h , params : * const ucc_context_params_t , config : ucc_context_config_h , context : * mut ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_progress routine progresses the operations\n  on the context handle.\n\n  @param [in]  context  Communication context handle to be progressed\n\n  @parblock\n\n  @b Description\n\n  The @ref ucc_context_progress routine progresses the operations on the\n  content handle. It does not block for lack of resources or communication.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_progress (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The @ref ucc_context_destroy routine frees the context handle.\n\n  @param [in]  context  Communication context handle to be released\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_context_destroy routine releases the resources associated\n  with the handle @e context. All teams associated with the context should be\n  released before this. It is invalid to associate any team with this handle\n  after the routine is called.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_destroy (context : ucc_context_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_CONTEXT\n\n  @brief The routine queries the attributes of the context handle.\n\n  @param [in]   context          Communication context\n  @param [out]  context_attr     Attributes of the communication context\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_context_get_attr routine queries the context handle\n  attributes described by @ref ucc_context_attr.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_context_get_attr (context : ucc_context_h , context_attr : * mut ucc_context_attr_t) -> ucc_status_t ; } pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ORDERING : ucc_team_params_field = 1 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS : ucc_team_params_field = 2 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP : ucc_team_params_field = 4 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_LIST : ucc_team_params_field = 8 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_RANGE : ucc_team_params_field = 16 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_TEAM_SIZE : ucc_team_params_field = 32 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_SYNC_TYPE : ucc_team_params_field = 64 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_OOB : ucc_team_params_field = 128 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_P2P_CONN : ucc_team_params_field = 256 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_MEM_PARAMS : ucc_team_params_field = 512 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_EP_MAP : ucc_team_params_field = 1024 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_ID : ucc_team_params_field = 2048 ; pub const ucc_team_params_field_UCC_TEAM_PARAM_FIELD_FLAGS : ucc_team_params_field = 4096 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_params_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_POST_ORDERING : ucc_team_attr_field = 1 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS : ucc_team_attr_field = 2 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP : ucc_team_attr_field = 4 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EP_RANGE : ucc_team_attr_field = 8 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SYNC_TYPE : ucc_team_attr_field = 16 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_MEM_PARAMS : ucc_team_attr_field = 32 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_SIZE : ucc_team_attr_field = 64 ; pub const ucc_team_attr_field_UCC_TEAM_ATTR_FIELD_EPS : ucc_team_attr_field = 128 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_attr_field = :: std :: os :: raw :: c_uint ; pub const ucc_team_flags_UCC_TEAM_FLAG_COLL_WORK_BUFFER : ucc_team_flags = 1 ; # [doc = " @ingroup UCC_TEAM_DT"] pub type ucc_team_flags = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_p2p_conn { pub conn_info_lookup : :: std :: option :: Option < unsafe extern "C" fn (conn_ctx : * mut :: std :: os :: raw :: c_void , ep : u64 , conn_info : * mut * mut ucc_p2p_conn_t , request : * mut :: std :: os :: raw :: c_void) -> :: std :: os :: raw :: c_int > , pub conn_info_release : :: std :: option :: Option < unsafe extern "C" fn (conn_info : * mut ucc_p2p_conn_t) -> :: std :: os :: raw :: c_int > , pub conn_ctx : * mut :: std :: os :: raw :: c_void , pub req_test : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , pub req_free : :: std :: option :: Option < unsafe extern "C" fn (request : * mut :: std :: os :: raw :: c_void) -> ucc_status_t > , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_p2p_conn"] [:: std :: mem :: size_of :: < ucc_team_p2p_conn > () - 40usize] ; ["Alignment of ucc_team_p2p_conn"] [:: std :: mem :: align_of :: < ucc_team_p2p_conn > () - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_lookup"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_lookup) - 0usize] ; ["Offset of field: ucc_team_p2p_conn::conn_info_release"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_info_release) - 8usize] ; ["Offset of field: ucc_team_p2p_conn::conn_ctx"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , conn_ctx) - 16usize] ; ["Offset of field: ucc_team_p2p_conn::req_test"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_test) - 24usize] ; ["Offset of field: ucc_team_p2p_conn::req_free"] [:: std :: mem :: offset_of ! (ucc_team_p2p_conn , req_free) - 32usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_team_p2p_conn_t = ucc_team_p2p_conn ; # [doc = " When set to this value, the collective participants shall post the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_ORDERED : ucc_post_ordering_t = 0 ; # [doc = " When set to this value, the collective participants shall post the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_POST_UNORDERED : ucc_post_ordering_t = 1 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_ORDERED : ucc_post_ordering_t = 2 ; # [doc = " When set to this value, the collective participants shall initialize the operation\n in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_UNORDERED : ucc_post_ordering_t = 3 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in the same order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_ORDERED : ucc_post_ordering_t = 4 ; # [doc = " When set to this value, the collective participants shall initialize and\n post the operation in any order."] pub const ucc_post_ordering_t_UCC_COLLECTIVE_INIT_AND_POST_UNORDERED : ucc_post_ordering_t = 5 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_post_ordering_t = :: std :: os :: raw :: c_uint ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_CONTIG : ucc_ep_range_type_t = 0 ; pub const ucc_ep_range_type_t_UCC_COLLECTIVE_EP_RANGE_NONCONTIG : ucc_ep_range_type_t = 1 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_range_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_strided { pub start : u64 , pub stride : i64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_strided"] [:: std :: mem :: size_of :: < ucc_ep_map_strided > () - 16usize] ; ["Alignment of ucc_ep_map_strided"] [:: std :: mem :: align_of :: < ucc_ep_map_strided > () - 8usize] ; ["Offset of field: ucc_ep_map_strided::start"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , start) - 0usize] ; ["Offset of field: ucc_ep_map_strided::stride"] [:: std :: mem :: offset_of ! (ucc_ep_map_strided , stride) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_array { pub map : * mut :: std :: os :: raw :: c_void , # [doc = "< 4 if array is int, 8 if e.g. uint64_t"] pub elem_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_array"] [:: std :: mem :: size_of :: < ucc_ep_map_array > () - 16usize] ; ["Alignment of ucc_ep_map_array"] [:: std :: mem :: align_of :: < ucc_ep_map_array > () - 8usize] ; ["Offset of field: ucc_ep_map_array::map"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , map) - 0usize] ; ["Offset of field: ucc_ep_map_array::elem_size"] [:: std :: mem :: offset_of ! (ucc_ep_map_array , elem_size) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ep_map_cb { pub cb : :: std :: option :: Option < unsafe extern "C" fn (ep : u64 , cb_ctx : * mut :: std :: os :: raw :: c_void) -> u64 > , pub cb_ctx : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_cb"] [:: std :: mem :: size_of :: < ucc_ep_map_cb > () - 16usize] ; ["Alignment of ucc_ep_map_cb"] [:: std :: mem :: align_of :: < ucc_ep_map_cb > () - 8usize] ; ["Offset of field: ucc_ep_map_cb::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb) - 0usize] ; ["Offset of field: ucc_ep_map_cb::cb_ctx"] [:: std :: mem :: offset_of ! (ucc_ep_map_cb , cb_ctx) - 8usize] ; } ; # [doc = "< The ep range of the team spans all eps from a context."] pub const ucc_ep_map_type_t_UCC_EP_MAP_FULL : ucc_ep_map_type_t = 1 ; # [doc = "< The ep range of the team can be described by the 2 values: start, stride."] pub const ucc_ep_map_type_t_UCC_EP_MAP_STRIDED : ucc_ep_map_type_t = 2 ; # [doc = "< The ep range is given as an array of intergers that map the ep in the team to\nthe team_context rank."] pub const ucc_ep_map_type_t_UCC_EP_MAP_ARRAY : ucc_ep_map_type_t = 3 ; # [doc = "< The ep range mapping is defined as callback provided by the UCC user."] pub const ucc_ep_map_type_t_UCC_EP_MAP_CB : ucc_ep_map_type_t = 4 ; # [doc = "  @ingroup UCC_TEAM_DT"] pub type ucc_ep_map_type_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_TEAM_DT"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_ep_map_t { pub type_ : ucc_ep_map_type_t , # [doc = "< number of eps mapped to ctx"] pub ep_num : u64 , pub __bindgen_anon_1 : ucc_ep_map_t__bindgen_ty_1 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_ep_map_t__bindgen_ty_1 { pub strided : ucc_ep_map_strided , pub array : ucc_ep_map_array , pub cb : ucc_ep_map_cb , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 16usize] ; ["Alignment of ucc_ep_map_t__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_ep_map_t__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::strided"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , strided) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::array"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , array) - 0usize] ; ["Offset of field: ucc_ep_map_t__bindgen_ty_1::cb"] [:: std :: mem :: offset_of ! (ucc_ep_map_t__bindgen_ty_1 , cb) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ep_map_t"] [:: std :: mem :: size_of :: < ucc_ep_map_t > () - 32usize] ; ["Alignment of ucc_ep_map_t"] [:: std :: mem :: align_of :: < ucc_ep_map_t > () - 8usize] ; ["Offset of field: ucc_ep_map_t::type_"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , type_) - 0usize] ; ["Offset of field: ucc_ep_map_t::ep_num"] [:: std :: mem :: offset_of ! (ucc_ep_map_t , ep_num) - 8usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_team_params { pub mask : u64 , pub flags : u64 , # [doc = " @ref ucc_team_params.ordering is set to one the values defined by @ref\n  ucc_post_ordering_t"] pub ordering : ucc_post_ordering_t , # [doc = " @ref ucc_team_params.outstanding_colls represents the number of outstanding non-blocking\n calls the user expects to post to the team. If the user posts more non-blocking\n calls than set, the behavior is undefined. If not set, there is no limit on\n the number of outstanding calls to be posted."] pub outstanding_colls : u64 , # [doc = " @ref ucc_team_params.ep The endpoint is a non-negative unique integer identifying the\n participant in the collective. If ep is not set, and @ref ucc_team_params.oob is not set, the\n library generates the ep. The generated ep can be queried using the @ref\n ucc_team_get_attr interface."] pub ep : u64 , # [doc = " @ref ucc_team_params.ep_list The endpoint list provides the list of eps participating to\n  create the team."] pub ep_list : * mut u64 , # [doc = " @ref ucc_team_params.ep_range can be either contiguous or not\n  contiguous. It is a hint to the library."] pub ep_range : ucc_ep_range_type_t , # [doc = " @ref ucc_team_params.team_size The team size is the number of participants in the team. If\n @ref ucc_team_params.oob is provided, the team size and @ref\n ucc_oob_coll.n_oob_eps should be the same."] pub team_size : u64 , # [doc = " @ref ucc_team_params.sync_type The options for sync_type are provided by @ref\n ucc_coll_sync_type_t"] pub sync_type : ucc_coll_sync_type_t , # [doc = " @ref ucc_team_params.oob The signature of the function is defined by @ref\n ucc_oob_coll_t\n . The oob is used for exchanging information between the team\n participants during team creation. The user is\n responsible for implementing the oob operation. The relation between @ref\n ucc_team_params.ep and @ref ucc_oob_coll.oob_ep is defined as below:\n\n - When both are not provided. The library is responsible for generating the ep,\n which can be then queried via the @ref ucc_team_get_attr interface. This\n requires, however, ucc_params_t ep_map to be set and context created by\n @ref ucc_oob_coll. The behavior is undefined, when neither @ref\n ucc_team_params.ep or @ref ucc_team_params.ep_map, or @ref\n ucc_team_params.oob is not set.\n\n - When @ref ucc_team_params.ep is provided and @ref ucc_team_params.oob is\n not provided. The “ep” is the unique integer for the participant.\n\n - When @ref ucc_oob_coll.oob_ep is provided and @ref ucc_team_params.ep\n is not provided. The “ep” will be equivalent to @ref ucc_oob_coll.oob_ep.\n\n - When both are provided, the @ref ucc_oob_coll.oob_ep and @ref\n ucc_team_params_t.ep should be same. Otherwise, it\n is undefined."] pub oob : ucc_team_oob_coll_t , # [doc = " @ref ucc_team_params.p2p_conn is a callback function for the gathering\n the point-to-point communication information."] pub p2p_conn : ucc_team_p2p_conn_t , # [doc = " @ref ucc_team_params.mem_params provides an ability to attach a buffer\n to the team. This can be used as input/output or control buffer for the\n team. Typically, it can be useful for one-sided collective\n implementation."] pub mem_params : ucc_mem_map_params_t , # [doc = " @ref ucc_team_params.ep_map provides a mapping between @ref\n ucc_oob_coll.oob_ep used by\n the team and @ref ucc_oob_coll.oob_ep\n used by the context. The mapping options are defined by @ref\n ucc_ep_map_t. The definition is valid only when context is created with\n an @ref ucc_oob_coll."] pub ep_map : ucc_ep_map_t , # [doc = " @ref ucc_team_params.id\n The team id is a unique integer identifying the team that is active. The\n integer is unique within the process and not the job .i.e., any two active\n non-overlapping teams can have the same id. This semantic helps to avoid a\n global information exchange .i.e, the processes or threads not\n participating in the particular, need not participate in the team\n creation. If not provided, the team id is created internally. For the MPI\n programming model, this can be inherited from the MPI communicator id."] pub id : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_params"] [:: std :: mem :: size_of :: < ucc_team_params > () - 208usize] ; ["Alignment of ucc_team_params"] [:: std :: mem :: align_of :: < ucc_team_params > () - 8usize] ; ["Offset of field: ucc_team_params::mask"] [:: std :: mem :: offset_of ! (ucc_team_params , mask) - 0usize] ; ["Offset of field: ucc_team_params::flags"] [:: std :: mem :: offset_of ! (ucc_team_params , flags) - 8usize] ; ["Offset of field: ucc_team_params::ordering"] [:: std :: mem :: offset_of ! (ucc_team_params , ordering) - 16usize] ; ["Offset of field: ucc_team_params::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_params , outstanding_colls) - 24usize] ; ["Offset of field: ucc_team_params::ep"] [:: std :: mem :: offset_of ! (ucc_team_params , ep) - 32usize] ; ["Offset of field: ucc_team_params::ep_list"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_list) - 40usize] ; ["Offset of field: ucc_team_params::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_range) - 48usize] ; ["Offset of field: ucc_team_params::team_size"] [:: std :: mem :: offset_of ! (ucc_team_params , team_size) - 56usize] ; ["Offset of field: ucc_team_params::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_params , sync_type) - 64usize] ; ["Offset of field: ucc_team_params::oob"] [:: std :: mem :: offset_of ! (ucc_team_params , oob) - 72usize] ; ["Offset of field: ucc_team_params::p2p_conn"] [:: std :: mem :: offset_of ! (ucc_team_params , p2p_conn) - 112usize] ; ["Offset of field: ucc_team_params::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_params , mem_params) - 152usize] ; ["Offset of field: ucc_team_params::ep_map"] [:: std :: mem :: offset_of ! (ucc_team_params , ep_map) - 168usize] ; ["Offset of field: ucc_team_params::id"] [:: std :: mem :: offset_of ! (ucc_team_params , id) - 200usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the parameters to customize the team\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_params_t defines the parameters that can be used to customize\n  the team. The \"mask\" bit array fields are defined by @ref\n  ucc_team_params_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_team_params_field, which correspond to fields in structure @ref\n  ucc_team_params_t. The valid fields of the structure is specified by the\n  setting the bit to \"1\" in the bit-array \"mask\". When bits corresponding to\n  the fields is not set, the fields are not defined.\n\n\n\n  @endparblock\n"] pub type ucc_team_params_t = ucc_team_params ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_team_attr { pub mask : u64 , pub ordering : ucc_post_ordering_t , pub outstanding_colls : u64 , pub ep : u64 , pub ep_range : ucc_ep_range_type_t , pub sync_type : ucc_coll_sync_type_t , pub mem_params : ucc_mem_map_params_t , pub size : u32 , pub eps : * mut u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_team_attr"] [:: std :: mem :: size_of :: < ucc_team_attr > () - 72usize] ; ["Alignment of ucc_team_attr"] [:: std :: mem :: align_of :: < ucc_team_attr > () - 8usize] ; ["Offset of field: ucc_team_attr::mask"] [:: std :: mem :: offset_of ! (ucc_team_attr , mask) - 0usize] ; ["Offset of field: ucc_team_attr::ordering"] [:: std :: mem :: offset_of ! (ucc_team_attr , ordering) - 8usize] ; ["Offset of field: ucc_team_attr::outstanding_colls"] [:: std :: mem :: offset_of ! (ucc_team_attr , outstanding_colls) - 16usize] ; ["Offset of field: ucc_team_attr::ep"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep) - 24usize] ; ["Offset of field: ucc_team_attr::ep_range"] [:: std :: mem :: offset_of ! (ucc_team_attr , ep_range) - 32usize] ; ["Offset of field: ucc_team_attr::sync_type"] [:: std :: mem :: offset_of ! (ucc_team_attr , sync_type) - 36usize] ; ["Offset of field: ucc_team_attr::mem_params"] [:: std :: mem :: offset_of ! (ucc_team_attr , mem_params) - 40usize] ; ["Offset of field: ucc_team_attr::size"] [:: std :: mem :: offset_of ! (ucc_team_attr , size) - 56usize] ; ["Offset of field: ucc_team_attr::eps"] [:: std :: mem :: offset_of ! (ucc_team_attr , eps) - 64usize] ; } ; # [doc = "  @ingroup UCC_TEAM_DT\n\n  @brief Structure representing the team attributes\n\n  @parblock\n\n  Description\n\n  @ref ucc_team_attr_t defines the attributes of the team. The bits in\n  \"mask\" bit array is defined by @ref ucc_team_attr_field, which correspond to\n  fields in structure @ref ucc_team_attr_t. The valid fields of the structure\n  is specified by the setting the bit to \"1\" in the bit-array \"mask\". When\n  bits corresponding to the fields is not set, the fields are not defined.\n\n  @endparblock\n"] pub type ucc_team_attr_t = ucc_team_attr ; unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine is a method to create the team.\n\n  @param  [in]  contexts           Communication contexts abstracting the resources\n  @param  [in]  num_contexts       Number of contexts passed for the create operation\n  @param  [in]  team_params        User defined configurations for the team\n  @param  [out] new_team           Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_post is a nonblocking collective operation to create\n  the team handle. Overlapping of multiple ucc\\_team\\_create\\_post operations\n  are invalid. The post takes in parameters ucc_context_h and ucc_team_params_t.\n  The ucc_team_params_t provides user configuration to customize the team and,\n  ucc_context_h provides the resources for the team and collectives.\n  The routine returns immediately after posting the operation with the\n  new team handle. However, the team handle is not ready for posting\n  the collective operation. ucc_team_create_test operation is used to learn\n  the status of the new team handle. On error, the team handle will not\n  be created and corresponding error code as defined by @ref ucc_status_t is\n  returned.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_post (contexts : * mut ucc_context_h , num_contexts : u32 , team_params : * const ucc_team_params_t , new_team : * mut ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine queries the status of the team creation operation.\n\n  @param  [in] team  Team handle to test\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_create_test routines tests the status of team handle.\n  If required it can progress the communication but cannot block on the\n  communications. On error, the team handle becomes invalid, user is responsible\n  to call ucc_team_destroy to destroy team and free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_test (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The team frees the team handle.\n\n  @param  [in] team  Destroy previously created team and release all resources\n                     associated with it.\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_team_destroy is a nonblocking collective operation to release all\n  resources associated with the team handle, and destroy the team handle. It is\n  invalid to post a collective operation after the ucc_team_destroy operation.\n  It is invalid to call @ref ucc_team_destroy operation while @ref\n  ucc_team_create_post is in progress. It is the user's responsibility to ensure\n  there is one outstanding @ref ucc_team_create_post or @ref ucc_team_destroy\n  operation is in progress.\n\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t\n"] pub fn ucc_team_destroy (team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine returns the attributes of the team.\n\n  @param [in]   team        Team handle\n  @param [out]  team_attr   Attributes of the team\n\n  @parblock\n\n  @b Description\n\n  @brief @ref ucc_team_get_attr routine queries the team handle\n  attributes. The attributes of the team handle are described by the team\n  attributes @ref ucc_team_attr_t\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_get_attr (team : ucc_team_h , team_attr : * mut ucc_team_attr_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_TEAM\n\n  @brief The routine creates a new team from the parent team.\n\n  @param [in]    my_ep          Endpoint of the process/thread calling the split operation\n  @param [in]    parent_team    Parent team handle from which a new team handle is created\n  @param [in]    included       Variable indicating whether a\n                                process/thread participates in the newly created team;\n                                value 1 indicates the participation and value 0 indicates\n                                otherwise\n  @param [out]   new_team       Pointer to the new team handle\n\n  @parblock\n\n  @b Description\n\n  @brief ucc_team_create_from_parent is a nonblocking collective operation,\n  which creates a new team from the parent team. If a participant intends to\n  participate in the new team, it passes a TRUE value for the \"included\"\n  parameter. Otherwise, it passes FALSE. The routine returns immediately after\n  the post-operation. To learn the completion of the team create operation, the\n  ucc_team_create_test operation is used.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_team_create_from_parent (my_ep : u64 , included : u32 , parent_team : ucc_team_h , new_team : * mut ucc_team_h) -> ucc_status_t ; } # [doc = "< If set, the\noutput buffer is\nidentical to the\ninput buffer."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_IN_PLACE : ucc_coll_args_flags_t = 1 ; # [doc = "< If set, the\ncollective is\nconsidered\npersistent.\nOnly, the\npersistent\ncollective\ncan be called\nmultiple times with\nthe same request."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_PERSISTENT : ucc_coll_args_flags_t = 2 ; # [doc = "< If set, the count\nis 64bit, otherwise,\nit is 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_COUNT_64BIT : ucc_coll_args_flags_t = 4 ; # [doc = "< If set, the\ndisplacement is\n64bit, otherwise, it\nis 32 bit."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT : ucc_coll_args_flags_t = 8 ; # [doc = "< If set, the src\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER : ucc_coll_args_flags_t = 16 ; # [doc = "<If set, the dst\nbuffer is considered\ncontiguous.\nParticularly, useful\nfor alltoallv\noperation."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER : ucc_coll_args_flags_t = 32 ; # [doc = "<If set and the elapsed\ntime after @ref ucc_collective_post\n(or @ref ucc_collective_triggered_post)\nis greater than @ref ucc_coll_args_t.timeout,\nthe library returns UCC_ERR_TIMED_OUT\non the calling thread.\nNote, the status is not guaranteed\nto be global on all the processes\nparticipating in the collective."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_TIMEOUT : ucc_coll_args_flags_t = 64 ; # [doc = "< If set, both src\nand dst buffers\nreside in a memory\nmapped region.\nUseful for one-sided\ncollectives."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS : ucc_coll_args_flags_t = 128 ; # [doc = "< If set, indicates\nthe src_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_SRC_MEMH_GLOBAL : ucc_coll_args_flags_t = 256 ; # [doc = "< If set, indicates\nthe dst_memh memory\nhandle is an array of\nglobal handles."] pub const ucc_coll_args_flags_t_UCC_COLL_ARGS_FLAG_DST_MEMH_GLOBAL : ucc_coll_args_flags_t = 512 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_flags_t = :: std :: os :: raw :: c_uint ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of CPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_CPU : ucc_coll_args_hints_t = 16777216 ; # [doc = "< When the flag is\nset, the user\nprefers the library\nto choose an\nalgorithm\nimplementation\noptimized for the\nbest overlap of GPU\nresources."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_OVERLAP_GPU : ucc_coll_args_hints_t = 33554432 ; # [doc = "<  When the flag is\nset, the user prefers\nthe library to choose\nan algorithm\nimplementation\noptimized for the\nlatency."] pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_OPTIMIZE_LATENCY : ucc_coll_args_hints_t = 67108864 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_SRC_BUFFER : ucc_coll_args_hints_t = 16 ; pub const ucc_coll_args_hints_t_UCC_COLL_ARGS_HINT_CONTIG_DST_BUFFER : ucc_coll_args_hints_t = 32 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_hints_t = :: std :: os :: raw :: c_uint ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info_v { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Array of counts of type @ref ucc_count_t\ndescribing the total number of elements"] pub counts : * mut ucc_count_t , # [doc = "< Displacement array of team size and\ntype @ref ucc_aint_t. Entry i specifies\nthe displacement relative to the start\naddress for the incoming data(\noutgoing data) for the team member i. For\nsend buffer the data is fetched from this\ndisplacement and for receive buffer the\nincoming data is placed at this\ndisplacement."] pub displacements : * mut ucc_aint_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info_v"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info_v > () - 40usize] ; ["Alignment of ucc_coll_buffer_info_v"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info_v > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info_v::counts"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , counts) - 8usize] ; ["Offset of field: ucc_coll_buffer_info_v::displacements"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , displacements) - 16usize] ; ["Offset of field: ucc_coll_buffer_info_v::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , datatype) - 24usize] ; ["Offset of field: ucc_coll_buffer_info_v::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info_v , mem_type) - 32usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_v_t = ucc_coll_buffer_info_v ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_buffer_info { # [doc = "< Starting address of the send/recv buffer"] pub buffer : * mut :: std :: os :: raw :: c_void , # [doc = "< Total number of elements in the buffer"] pub count : ucc_count_t , # [doc = "< Datatype of each buffer element"] pub datatype : ucc_datatype_t , # [doc = "< Memory type of buffer as defined by @ref\nucc_memory_type"] pub mem_type : ucc_memory_type_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_buffer_info"] [:: std :: mem :: size_of :: < ucc_coll_buffer_info > () - 32usize] ; ["Alignment of ucc_coll_buffer_info"] [:: std :: mem :: align_of :: < ucc_coll_buffer_info > () - 8usize] ; ["Offset of field: ucc_coll_buffer_info::buffer"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , buffer) - 0usize] ; ["Offset of field: ucc_coll_buffer_info::count"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , count) - 8usize] ; ["Offset of field: ucc_coll_buffer_info::datatype"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , datatype) - 16usize] ; ["Offset of field: ucc_coll_buffer_info::mem_type"] [:: std :: mem :: offset_of ! (ucc_coll_buffer_info , mem_type) - 24usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_buffer_info_t = ucc_coll_buffer_info ; pub const ucc_error_type_t_UCC_ERR_TYPE_LOCAL : ucc_error_type_t = 0 ; pub const ucc_error_type_t_UCC_ERR_TYPE_GLOBAL : ucc_error_type_t = 1 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_error_type_t = :: std :: os :: raw :: c_uint ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_FLAGS : ucc_coll_args_field = 1 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_TAG : ucc_coll_args_field = 2 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_CB : ucc_coll_args_field = 4 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER : ucc_coll_args_field = 8 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_ACTIVE_SET : ucc_coll_args_field = 16 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_SRC_MEMH : ucc_coll_args_field = 32 ; pub const ucc_coll_args_field_UCC_COLL_ARGS_FIELD_MEM_MAP_DST_MEMH : ucc_coll_args_field = 64 ; # [doc = "  @ingroup UCC_COLLECTIVES_DT"] pub type ucc_coll_args_field = :: std :: os :: raw :: c_uint ; pub type ucc_mem_map_mem_h = * mut :: std :: os :: raw :: c_void ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] # [repr (C)] # [derive (Copy , Clone)] pub struct ucc_coll_args { pub mask : u64 , # [doc = "< Type of collective operation"] pub coll_type : ucc_coll_type_t , pub src : ucc_coll_args__bindgen_ty_1 , pub dst : ucc_coll_args__bindgen_ty_2 , # [doc = "< Predefined reduction operation, if\nreduce, allreduce, reduce_scatter\noperation is selected.\nThe field is only specified for collectives\nthat use pre-defined datatypes"] pub op : ucc_reduction_op_t , # [doc = "< Provide flags and hints for the\ncollective operations"] pub flags : u64 , # [doc = "< Root endpoint for rooted\ncollectives"] pub root : u64 , # [doc = "< Error type"] pub error_type : ucc_error_type_t , # [doc = "< Used for ordering collectives"] pub tag : ucc_coll_id_t , # [doc = "< User allocated scratchpad\nbuffer for one-sided\ncollectives. The buffer\nprovided should be at least\nthe size returned by @ref\nucc_context_get_attr with\nthe field mask -\nUCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE\nset to 1. The buffer must be initialized\nto 0."] pub global_work_buffer : * mut :: std :: os :: raw :: c_void , pub cb : ucc_coll_callback_t , # [doc = "< Timeout in seconds"] pub timeout : f64 , pub active_set : ucc_coll_args__bindgen_ty_3 , pub src_memh : ucc_coll_args__bindgen_ty_4 , pub dst_memh : ucc_coll_args__bindgen_ty_5 , } # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_1 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_1 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_1"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_1 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_1::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_1 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_2 { # [doc = "< Buffer info for the collective"] pub info : ucc_coll_buffer_info_t , # [doc = "< Buffer info for the collective"] pub info_v : ucc_coll_buffer_info_v_t , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_2 > () - 40usize] ; ["Alignment of ucc_coll_args__bindgen_ty_2"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_2 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_2::info_v"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_2 , info_v) - 0usize] ; } ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_coll_args__bindgen_ty_3 { pub start : u64 , pub stride : i64 , pub size : u64 , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_3 > () - 24usize] ; ["Alignment of ucc_coll_args__bindgen_ty_3"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_3 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::start"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , start) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::stride"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , stride) - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_3::size"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_3 , size) - 16usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_4 { # [doc = "< Memory handle of locally\nmapped memory for the src\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the src buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_4"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_4 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_4::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_4 , global_memh) - 0usize] ; } ; # [repr (C)] # [derive (Copy , Clone)] pub union ucc_coll_args__bindgen_ty_5 { # [doc = "< Memory handle of locally\nmapped memory for the dst\nbuffer"] pub local_memh : ucc_mem_map_mem_h , # [doc = "< Array of memory handles\nfor the dst buffer\ncorresponding to all\nparticipating processes\nin the collective"] pub global_memh : * mut ucc_mem_map_mem_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: size_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Alignment of ucc_coll_args__bindgen_ty_5"] [:: std :: mem :: align_of :: < ucc_coll_args__bindgen_ty_5 > () - 8usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::local_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , local_memh) - 0usize] ; ["Offset of field: ucc_coll_args__bindgen_ty_5::global_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args__bindgen_ty_5 , global_memh) - 0usize] ; } ; # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_coll_args"] [:: std :: mem :: size_of :: < ucc_coll_args > () - 200usize] ; ["Alignment of ucc_coll_args"] [:: std :: mem :: align_of :: < ucc_coll_args > () - 8usize] ; ["Offset of field: ucc_coll_args::mask"] [:: std :: mem :: offset_of ! (ucc_coll_args , mask) - 0usize] ; ["Offset of field: ucc_coll_args::coll_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , coll_type) - 8usize] ; ["Offset of field: ucc_coll_args::src"] [:: std :: mem :: offset_of ! (ucc_coll_args , src) - 16usize] ; ["Offset of field: ucc_coll_args::dst"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst) - 56usize] ; ["Offset of field: ucc_coll_args::op"] [:: std :: mem :: offset_of ! (ucc_coll_args , op) - 96usize] ; ["Offset of field: ucc_coll_args::flags"] [:: std :: mem :: offset_of ! (ucc_coll_args , flags) - 104usize] ; ["Offset of field: ucc_coll_args::root"] [:: std :: mem :: offset_of ! (ucc_coll_args , root) - 112usize] ; ["Offset of field: ucc_coll_args::error_type"] [:: std :: mem :: offset_of ! (ucc_coll_args , error_type) - 120usize] ; ["Offset of field: ucc_coll_args::tag"] [:: std :: mem :: offset_of ! (ucc_coll_args , tag) - 124usize] ; ["Offset of field: ucc_coll_args::global_work_buffer"] [:: std :: mem :: offset_of ! (ucc_coll_args , global_work_buffer) - 128usize] ; ["Offset of field: ucc_coll_args::cb"] [:: std :: mem :: offset_of ! (ucc_coll_args , cb) - 136usize] ; ["Offset of field: ucc_coll_args::timeout"] [:: std :: mem :: offset_of ! (ucc_coll_args , timeout) - 152usize] ; ["Offset of field: ucc_coll_args::active_set"] [:: std :: mem :: offset_of ! (ucc_coll_args , active_set) - 160usize] ; ["Offset of field: ucc_coll_args::src_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , src_memh) - 184usize] ; ["Offset of field: ucc_coll_args::dst_memh"] [:: std :: mem :: offset_of ! (ucc_coll_args , dst_memh) - 192usize] ; } ; # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief Structure representing arguments for the collective operations\n\n  @parblock\n\n  @b Description\n  @n @n\n  @ref ucc_coll_args_t defines the parameters that can be used to customize\n  the collective operation. The \"mask\" bit array fields are defined by @ref\n  ucc_coll_args_field. The bits in \"mask\" bit array is defined by @ref\n  ucc_coll_args_field, which correspond to fields in structure @ref\n  ucc_coll_args_t. The valid fields of the structure are specified by\n  setting the corresponding bit to \"1\" in the bit-array \"mask\".\n  @n @n\n  The collective operation is selected by field \"coll_type\" which must be always\n  set by user. If allreduce or *  reduce operation is selected, the type of\n  reduction is selected by the field *  \"predefined_reduction_op\" or\n  \"custom_reduction_op\". For unordered collective\n  operations, the user-provided \"tag\" value orders the collective operation.\n  For rooted collective operations such as reduce, scatter, gather, fan-in, and\n  fan-out, the \"root\" field  must be provided by user and specify the participant\n  endpoint value. The user\n  can request either \"local\" or \"global\" error information using the\n  \"error_type\" field.\n\n  @n @n\n  Information about user buffers used for collective operation must be specified\n  according to the \"coll_type\".\n  @endparblock\n"] pub type ucc_coll_args_t = ucc_coll_args ; unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize a collective operation.\n\n  @param [in]    coll_args   Collective arguments descriptor\n  @param [out]   request     Request handle representing the collective operation\n  @param [in]    team        Team handle\n\n  @parblock\n\n  @b Description\n\n  @ref  ucc_collective_init is a collective initialization operation,\n  where all participants participate. The user provides all information\n  required to start and complete the collective operation, which includes the\n  input and output buffers, operation type, team handle, size, and any other\n  hints for optimization. On success, the request handle is created and\n  returned. On error, the request handle is not created and the appropriate\n  error code is returned. On return, the ownership of buffers is transferred\n  to the user. If modified, the results of collective operations posted on the\n  request handle are undefined.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to post a collective operation.\n\n  @param [in]     request     Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_post routine posts the collective operation. It\n  does not require synchronization between the participants for the post\n  operation. On error, request handle becomes invalid, user is responsible\n  to call ucc_collective_finalize to free allocated resources.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_post (request : ucc_coll_req_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to initialize and post a collective operation.\n\n  @param [out]     request     Request handle representing the collective operation\n  @param [in]      coll_args   Collective arguments descriptor\n  @param [in]      team        Input Team\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_init_and_post initializes the collective operation\n  and also posts the operation.\n\n  @note: The @ref ucc_collective_init_and_post can be implemented as a\n  combination of @ref ucc_collective_init and @ref ucc_collective_post\n  routines.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_init_and_post (coll_args : * mut ucc_coll_args_t , request : * mut ucc_coll_req_h , team : ucc_team_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = "  @ingroup UCC_COLLECTIVES\n\n  @brief The routine to release the collective operation associated with the request object.\n\n  @param [in] request - Request handle\n\n  @parblock\n\n  @b Description\n\n  @ref ucc_collective_finalize operation releases all resources\n  associated with the collective operation represented by the request handle.\n  In UCC_THREAD_MULTIPLE mode, the user is responsible for ensuring that\n  @ref ucc_collective_finalize is called after the status is UCC_OK and after\n  completing the execution of any callback registered with @ref ucc_coll_args_t.\n\n  @endparblock\n\n  @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_finalize (request : ucc_coll_req_h) -> ucc_status_t ; } pub const ucc_event_type_UCC_EVENT_COLLECTIVE_POST : ucc_event_type = 1 ; pub const ucc_event_type_UCC_EVENT_COLLECTIVE_COMPLETE : ucc_event_type = 2 ; pub const ucc_event_type_UCC_EVENT_COMPUTE_COMPLETE : ucc_event_type = 4 ; pub const ucc_event_type_UCC_EVENT_OVERFLOW : ucc_event_type = 8 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_event_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_event_type as ucc_event_type_t ; pub const ucc_ee_type_UCC_EE_FIRST : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CUDA_STREAM : ucc_ee_type = 0 ; pub const ucc_ee_type_UCC_EE_CPU_THREAD : ucc_ee_type = 1 ; pub const ucc_ee_type_UCC_EE_ROCM_STREAM : ucc_ee_type = 2 ; pub const ucc_ee_type_UCC_EE_LAST : ucc_ee_type = 3 ; pub const ucc_ee_type_UCC_EE_UNKNOWN : ucc_ee_type = 3 ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_type = :: std :: os :: raw :: c_uint ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub use self :: ucc_ee_type as ucc_ee_type_t ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_event { pub ev_type : ucc_event_type_t , pub ev_context : * mut :: std :: os :: raw :: c_void , pub ev_context_size : usize , pub req : ucc_coll_req_h , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_event"] [:: std :: mem :: size_of :: < ucc_event > () - 32usize] ; ["Alignment of ucc_event"] [:: std :: mem :: align_of :: < ucc_event > () - 8usize] ; ["Offset of field: ucc_event::ev_type"] [:: std :: mem :: offset_of ! (ucc_event , ev_type) - 0usize] ; ["Offset of field: ucc_event::ev_context"] [:: std :: mem :: offset_of ! (ucc_event , ev_context) - 8usize] ; ["Offset of field: ucc_event::ev_context_size"] [:: std :: mem :: offset_of ! (ucc_event , ev_context_size) - 16usize] ; ["Offset of field: ucc_event::req"] [:: std :: mem :: offset_of ! (ucc_event , req) - 24usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ev_t = ucc_event ; # [doc = " @ingroup UCC_EVENT_DT\n"] # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct ucc_ee_params { pub ee_type : ucc_ee_type_t , pub ee_context : * mut :: std :: os :: raw :: c_void , pub ee_context_size : usize , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of ucc_ee_params"] [:: std :: mem :: size_of :: < ucc_ee_params > () - 24usize] ; ["Alignment of ucc_ee_params"] [:: std :: mem :: align_of :: < ucc_ee_params > () - 8usize] ; ["Offset of field: ucc_ee_params::ee_type"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_type) - 0usize] ; ["Offset of field: ucc_ee_params::ee_context"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context) - 8usize] ; ["Offset of field: ucc_ee_params::ee_context_size"] [:: std :: mem :: offset_of ! (ucc_ee_params , ee_context_size) - 16usize] ; } ; # [doc = " @ingroup UCC_EVENT_DT\n"] pub type ucc_ee_params_t = ucc_ee_params ; unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine creates the execution context for collective operations.\n\n @param [in]  team    Team handle\n @param [in]  params  User provided params to customize the execution engine\n @param [out] ee      Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_create creates the execution engine. It enables event-driven\n collective execution. @ref ucc_ee_params_t allows the execution engine to be\n configured to abstract either GPU and CPU threads. The execution engine is\n created and coupled with the team. There can be many execution engines\n coupled to the team. However, attaching the same execution engine to multiple\n teams is not allowed. The execution engine is created after the team is\n created and destroyed before the team is destroyed. It is the user's\n responsibility to destroy the execution engines before the team. If the team\n is destroyed before the execution engine is destroyed, the result is\n undefined.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_create (team : ucc_team_h , params : * const ucc_ee_params_t , ee : * mut ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine destroys the execution context created for collective operations.\n\n @param [in] ee   Execution engine handle\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_destroy releases the resources attached with the\n execution engine and destroys the execution engine. All events and triggered\n operations related to this ee are invalid after the destroy operation. To\n avoid race between the creation and destroying the execution engine, for a\n given ee, the @ref ucc_ee_create and @ref ucc_ee_destroy must be invoked from\n the same thread.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_destroy (ee : ucc_ee_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine gets the event from the event queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_get_event fetches the events from the execution engine. If there\n are no events posted on the ee, it returns immediately without waiting for\n events. All events must be acknowledged using the @ref ucc_ee_ack_event\n interface. The event acknowledged is destroyed by the library. An event\n fetched with @ref ucc_ee_get_event but not acknowledged might consume\n resources in the library.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_get_event (ee : ucc_ee_h , ev : * mut * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine acks the events from the event queue.\n\n @param [in]  ee      Execution engine handle\n @param [in]  ev      Event to be acked\n\n @parblock\n\n @b Description\n\n An event acknowledged by the user using @ref ucc_ee_ack_event is destroyed by\n the library. Any triggered operations on the event should be completed before\n calling this interface. The behavior is undefined if the user acknowledges\n the event while waiting on the event or triggering operations on the event.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_ack_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine to set the event to the tail of the queue.\n\n @param [in]  ee        Execution engine handle\n @param [in]  ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n @ref ucc_ee_set_event sets the event on the execution engine. If the\n operations are waiting on the event when the user sets the event, the\n operations are launched. The events created by the user need to be destroyed\n by the user.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_set_event (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine blocks the calling thread until there is an event on the queue.\n\n @param [in]  ee        Execution engine handle\n @param [out] ev        Event structure fetched from the event queue\n\n @parblock\n\n @b Description\n\n The user thread invoking the @ref ucc_ee_wait interface is blocked until an\n event is posted to the execution engine.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_ee_wait (ee : ucc_ee_h , ev : * mut ucc_ev_t) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_EVENT\n\n @brief The routine posts the collective operation on the execution engine, which is\n launched on the event.\n\n @param [in]  ee          Execution engine handle\n @param [in]  ee_event    Event triggering the post operation\n\n @parblock\n\n @b Description\n\n @ref ucc_collective_triggered_post allow the users to schedule a collective\n operation that executes in the future when an event occurs on the execution\n engine. On error, request handle associated with event becomes invalid,\n user is responsible to call ucc_collective_finalize to free allocated resources.\n\n @endparblock\n\n @return Error code as defined by @ref ucc_status_t"] pub fn ucc_collective_triggered_post (ee : ucc_ee_h , ee_event : * mut ucc_ev_t) -> ucc_status_t ; } # [doc = "< Indicate ucc_mem_map() should export\nmemory handles from TLs used by\ncontext"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT : ucc_mem_map_mode_t = 0 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from user memory handle"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT : ucc_mem_map_mode_t = 1 ; # [doc = "< Indicate ucc_mem_map() should\nexport memory handles from TLs used\nby a context on an offloaded\ndevice"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_EXPORT_OFFLOAD : ucc_mem_map_mode_t = 2 ; # [doc = "< Indicate ucc_mem_map() should import\nmemory handles from a host's memory\nhandle to an offloaded device"] pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_IMPORT_OFFLOAD : ucc_mem_map_mode_t = 3 ; pub const ucc_mem_map_mode_t_UCC_MEM_MAP_MODE_LAST : ucc_mem_map_mode_t = 4 ; # [doc = " @ingroup UCC_DATATYPE"] pub type ucc_mem_map_mode_t = :: std :: os :: raw :: c_uint ; unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine registers or maps memory for use in future collectives.\n\n This local routine maps a user-specified memory segment with a\n ucc_context_h. The segment is considered \"mapped\" with the context until\n the user calls ucc_mem_unmap. It is the user's responsibility to unmap all\n mapped segments prior to calling ucc_context_destroy(). A handle to the\n mapped memory is provided in memh. If the mode UCC_MEM_MAP_MODE_EXPORT is used,\n the memory will be mapped and memory handles from TLs will be generated and\n stored in the memh. If the mode UCC_MEM_MAP_MODE_IMPORT is used, the user must\n provide a valid memh, otherwise behavior is undefined.\n\n @param [in] context     Context mapped memory is associated with\n @param [in] mode        mode dictating the behavior of the routine\n @param [in] params      parameters indicating the address and length of\n                          memory to map\n @param [out] memh_size  Size of memory handle when exported\n @param [inout] *memh    Handle for the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_map (context : ucc_context_h , mode : ucc_mem_map_mode_t , params : * const ucc_mem_map_params_t , memh_size : * mut usize , memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { # [doc = " @ingroup UCC_CONTEXT\n @brief Routine unmaps memory from a context\n\n This is a local routine that unmaps memory and all resources\n associated with the memory from a context. The memh object is freed and\n cannot be reused.\n\n @param [in] *memh       Handle of the registered memory\n\n @return Error code as defined by ucc_status_t."] pub fn ucc_mem_unmap (memh : * mut ucc_mem_map_mem_h) -> ucc_status_t ; } unsafe extern "C" { pub fn ucc_collective_test_wrapper (request : ucc_coll_req_h) -> ucc_status_t ; } pub type __builtin_va_list = [__va_list_tag ; 1usize] ; # [repr (C)] # [derive (Debug , Copy , Clone)] pub struct __va_list_tag { pub gp_offset : :: std :: os :: raw :: c_uint , pub fp_offset : :: std :: os :: raw :: c_uint , pub overflow_arg_area : * mut :: std :: os :: raw :: c_void , pub reg_save_area : * mut :: std :: os :: raw :: c_void , } # [allow (clippy :: unnecessary_operation , clippy :: identity_op)] const _ : () = { ["Size of __va_list_tag"] [:: std :: mem :: size_of :: < __va_list_tag > () - 24usize] ; ["Alignment of __va_list_tag"] [:: std :: mem :: align_of :: < __va_list_tag > () - 8usize] ; ["Offset of field: __va_list_tag::gp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , gp_offset) - 0usize] ; ["Offset of field: __va_list_tag::fp_offset"] [:: std :: mem :: offset_of ! (__va_list_tag , fp_offset) - 4usize] ; ["Offset of field: __va_list_tag::overflow_arg_area"] [:: std :: mem :: offset_of ! (__va_list_tag , overflow_arg_area) - 8usize] ; ["Offset of field: __va_list_tag::reg_save_area"] [:: std :: mem :: offset_of ! (__va_list_tag , reg_save_area) - 16usize] ; } ;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5m 52s
[INFO] running `Command { std: "docker" "inspect" "5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2", kill_on_drop: false }`
[INFO] [stdout] 5545ae5509e84ed310c858165d5eb433b4f67f04ab02df26912e21ee2cbd98f2
