Initialization & Miscellaneous Functions
To intialize the library, a call to diverge_init() is required.
Correspondingly, the divERGe context must be cleaned up by calling
diverge_finalize().
-
type MPI_Comm
[source] MPI Communicator, might be typedef’ed to
void*in case MPI is not compiled in
-
void diverge_init(int *pargc, char ***pargv)
[source] useful if divERGe is the only MPI component, calls
MPI_Init();and other setup tasks; sets the internal communicator automatically.
-
void diverge_embed(MPI_Comm comm)
[source] useful if divERGe should be called as a library with an existing MPI context
-
void diverge_reset(void)
[source] reset the internal context, but do not clean up the MPI communicator
-
index_t *diverge_mpi_distribute(index_t sz)
[source] returns array of length two times
diverge_mpi_comm_size()that must be freed manually. First half is the count, second the displ. second half can be safely ignored.
-
index_t *diverge_distribute(index_t sz, index_t bins)
[source] returns array of length two times
binsthat must be freed manually. First half is the count, second the displacement. second half can be safely ignored.
Actual MPI Functions
divERGe wraps several MPI functions, for a full list see the source. They all
act on the MPI Communicator set on initialization through
diverge_init() or diverge_embed().
-
void diverge_mpi_alltoallv_bytes_packed(const void *s, const int *sc, const int *sd, void *r, const int *rc, const int *rd, index_t numbytes)
[source] this version of alltoallv requires some explanation: since MPI typically only knows 32bit integers for any count/displ variables, we can trick it into operation on larger arrays by making packed datatypes. This is exactly what this function is here for. Note that the other version of alltoallv (undocumented) is restricted to 32bit bytes of communication.
Other miscellaneous (parallel) functions
- Allocators
- License
- Status
- Logging
mpi_printf()mpi_eprintf()mpi_fprintf()mpi_lll_printf()mpi_tim_printf()mpi_err_printf()mpi_err_printf_all()mpi_wrn_printf()mpi_scc_printf()mpi_log_printf_all()mpi_log_printf()mpi_vrb_printf_all()mpi_vrb_printf()mpi_fil_printf()mpi_usr_printf()mpi_ver_printf()mpi_btr_printf()mpi_loglevel_set()mpi_loglevel_get()mpi_log_set_colors()mpi_log_get_colors()mpi_log_control_tmpi_log_control()mpi_py_print()mpi_py_eprint()mpi_py_print_all()mpi_py_eprint_all()
- Datatypes & Common Macros
- Shared Memory
- IEEE 754 Quiet NaN
qnan_gen()qnan_isnan()qnan_get()fnan_gen()fnan_get()fnan_isnan()qnanf_gen()qnanf_isnan()qnanf_get()fnanf_gen()fnanf_get()fnanf_isnan()diverge_qnan_gen()diverge_qnan_get()diverge_qnan_isnan()diverge_fnan_gen()diverge_fnan_get()diverge_fnan_isnan()diverge_qnanf_gen()diverge_qnanf_get()diverge_qnanf_isnan()diverge_fnanf_gen()diverge_fnanf_get()diverge_fnanf_isnan()
- Bit Arrays
- Linear Algebra
batched_eigen_r()batched_eigen_r_set_eigen3_mode()batched_eigen_r_get_eigen3_mode()batched_eigen_set_nchunks()batched_eigen_get_nchunks()batched_eigen_set_nthreads()batched_eigen_shut_up()batched_svd()batched_gemm_overlapping()batched_gemm()batched_gemm_with_buffers()batched_gemm_vertex_loop()batched_gemm_loop_vertex()batched_gemm_cublas_init()batched_gemm_cublas_clear()batched_gemm_cublas_w_buffer_clear()batched_gemm_N_ll_num()batched_gemm_small_handle_tbatched_gemm_small_init()batched_gemm_small_destroy()batched_gemm_small_mode_tbatched_gemm_small_mode()batched_gemm_small()batched_zgemd_r()single_eigen()single_svd()single_eigen_sort()single_eigen_sort_part()single_eigen_sort_N()power_iteration()single_gemm()single_gemm_serial()single_gemm_adjoint()single_square_gemm()transpose_inplace()transpose_outofplace()transpose_conj_outofplace()matrix_invert()cmatrix_invert()cfmatrix_invert_F()cmatrix_determinant()LINALG_IMPLEMENT