MCPcopy Create free account
hub / github.com/NanoComp/meep / array_to_all

Function array_to_all

src/array_slice.cpp:48–65  ·  view source on GitHub ↗

/ repeatedly call sum_to_all to consolidate all entries of */ an array on all cores. */ array: in/out ptr to the data */ array_size: data size in multiples of sizeof(realnum) */ /

Source from the content-addressed store, hash-verified

46/* array_size: data size in multiples of sizeof(realnum) */
47/***************************************************************/
48realnum *array_to_all(realnum *array, size_t array_size) {
49#ifdef HAVE_MPI
50 realnum *buffer = new realnum[ARRAY_TO_ALL_BUFSIZE];
51 ptrdiff_t offset = 0;
52 size_t remaining = array_size;
53 while (remaining != 0) {
54 size_t xfer_size = (remaining > ARRAY_TO_ALL_BUFSIZE ? ARRAY_TO_ALL_BUFSIZE : remaining);
55 sum_to_all(array + offset, buffer, xfer_size);
56 memcpy(array + offset, buffer, xfer_size * sizeof(realnum));
57 remaining -= xfer_size;
58 offset += xfer_size;
59 }
60 delete[] buffer;
61#else
62 UNUSED(array_size);
63#endif
64 return array;
65}
66
67complex<realnum> *array_to_all(complex<realnum> *array, size_t array_size) {
68 return (complex<realnum> *)array_to_all((realnum *)array, 2 * array_size);

Callers 2

do_get_array_sliceMethod · 0.85
get_source_sliceMethod · 0.85

Calls 1

sum_to_allFunction · 0.85

Tested by

no test coverage detected