static void initChunksCommon() { #define ROUND_CHUNKS(a) a = (((a) + CHUNK_SIZE - 1) / CHUNK_SIZE) * CHUNK_SIZE; int q; if (CHUNK_SIZE != 1 << log2_ceil(CHUNK_SIZE)) { do_log(L_ERROR, "CHUNK SIZE %d is not a power of two.\n", CHUNK_SIZE); exit(1); } ROUND_CHUNKS(chunkHighMark); ROUND_CHUNKS(chunkCriticalMark); ROUND_CHUNKS(chunkLowMark); if (chunkHighMark < 8 * CHUNK_SIZE) { int mem = physicalMemory(); if (mem > 0) chunkHighMark = mem / 4; else chunkHighMark = 24 * MB; chunkHighMark = MIN(chunkHighMark, 24 * MB); chunkHighMark = MAX(chunkHighMark, 8 * CHUNK_SIZE); } if (chunkHighMark < MB / 2) fprintf(stderr, "Warning: little chunk memory (%d bytes)\n", chunkHighMark); q = 0; if (chunkLowMark <= 0) q = 1; if (chunkLowMark < 4 * CHUNK_SIZE || chunkLowMark > chunkHighMark - 4 * CHUNK_SIZE) { chunkLowMark = MIN(chunkHighMark - 4 * CHUNK_SIZE, chunkHighMark * 3 / 4); ROUND_CHUNKS(chunkLowMark); if (!q) do_log(L_WARN, "Inconsistent chunkLowMark -- setting to %d.\n", chunkLowMark); } q = 0; if (chunkCriticalMark <= 0) q = 1; if (chunkCriticalMark >= chunkHighMark - 2 * CHUNK_SIZE || chunkCriticalMark <= chunkLowMark + 2 * CHUNK_SIZE) { chunkCriticalMark = MIN(chunkHighMark - 2 * CHUNK_SIZE, chunkLowMark + (chunkHighMark - chunkLowMark) * 15 / 16); ROUND_CHUNKS(chunkCriticalMark); if (!q) do_log(L_WARN, "Inconsistent chunkCriticalMark -- " "setting to %d.\n", chunkCriticalMark); } #undef ROUND_CHUNKS }
/* ChapelReduce.chpl:2 */ int64_t _reduce(_sum_int64_t r, _ic_physicalMemory__ref__array_int32_t_locale_1_SingleLocaleArithmeticArray_locale_int32_t_0_1_0 s, int32_t _ln, _string _fn) { _sum_int64_t T1 = NULL; int64_t T26; _array_int32_t_locale_1_SingleLocaleArithmeticArray_locale_int32_t_0_1_0 T2; MemUnits T3; MemUnits T4; SingleLocaleArithmeticArray_locale_int32_t_0_1_0 T5 = NULL; SingleLocaleArithmeticArray_locale_int32_t_0_1_0 T6 = NULL; SingleLocaleArithmeticDomain_1_int32_t_0 T7 = NULL; range_int32_t_bounded_0 T9; _tuple_1_range_int32_t_bounded_0 T8; range_int32_t_bounded_0 T10; int32_t T11; int32_t T13; int32_t T12; int32_t T15; int32_t T14; _ref_int32_t T16 = NULL; int32_t T17; int32_t T18; int32_t T19; int32_t T20; _ddata_locale T21 = NULL; _ref_locale T22 = NULL; locale T23 = NULL; int64_t T24; int64_t T25; T1 = r; T2 = (s->_0_this); T3 = (s->_1_unit); T4 = T3; T5 = (T2._value); T6 = T5; T7 = (T5->dom); T8 = (T7->ranges); T9 = (T8.x1); T10 = _copy(&(T9)); T11 = 0; T12 = (T10._low); T13 = T12; T14 = (T10._high); T15 = T14; for (T11 = T13; T11 <= T15; T11 += 1) { T16 = &(T11); T17 = (T6->origin); T18 = (T17+T11); T19 = (T6->factoredOffs); T20 = (T18-T19); T21 = (T6->data); T22 = _ARRAY_GET(T21, T20); T23 = *(T22); T24 = physicalMemory(T23, T4, _ln, _fn); accumulate(T1, T24); } T25 = generate(T1); T26 = T25; return T26; }