Я хочу выполнить некоторые тесты из HPCC, STREAM и GUPS.Может ли тест STREAM и GUPS (одиночный процессор) использовать нелокальную память в машине NUMA
Они будут тестировать пропускную способность, задержку и пропускную способность памяти (в режиме произвольного доступа).
Могу ли я запускать тест одиночного CPU STREAM или одиночный CPU GUPS на узле NUMA с включенным чередованием памяти? (Это разрешено по правилам HPCC - High Performance Computing Challenge?)
Использование нелокальной памяти может увеличить результаты GUPS, поскольку оно увеличит количество или количество карт памяти в два или четыре раза для случайного доступа. (GUPS обычно ограничивается неидеальной подсистемой памяти и медленным открытием/закрытием банка памяти. С большим количеством банков он может обновлять до одного банка, в то время как другие банки открывают/закрывают.)
Спасибо.
UPDATE:
(вы можете и не изменять порядок доступа к памяти, что программа делает).
Может ли компилятор переупорядочить петли в гнездо? Например. HPCC/RandomAccess.c
/* Perform updates to main table. The scalar equivalent is:
*
* u64Int ran;
* ran = 1;
* for (i=0; i<NUPDATE; i++) {
* ran = (ran << 1)^(((s64Int) ran < 0) ? POLY : 0);
* table[ran & (TableSize-1)] ^= stable[ran >> (64-LSTSIZE)];
* }
*/
for (j=0; j<128; j++)
ran[j] = starts ((NUPDATE/128) * j);
for (i=0; i<NUPDATE/128; i++) {
/* #pragma ivdep */
for (j=0; j<128; j++) {
ran[j] = (ran[j] << 1)^((s64Int) ran[j] < 0 ? POLY : 0);
Table[ran[j] & (TableSize-1)] ^= stable[ran[j] >> (64-LSTSIZE)];
}
}
Основной цикл здесь for (i=0; i<NUPDATE/128; i++) {
и вложенный цикл for (j=0; j<128; j++) {
. Использование оптимизации «цикл обмена», компилятор может преобразовать этот код в
for (j=0; j<128; j++) {
for (i=0; i<NUPDATE/128; i++) {
ran[j] = (ran[j] << 1)^((s64Int) ran[j] < 0 ? POLY : 0);
Table[ran[j] & (TableSize-1)] ^= stable[ran[j] >> (64-LSTSIZE)];
}
}
Это может быть сделано, потому что это петля гнездо идеально гнездо петли. Является ли такая оптимизация запрещена правилами HPCC?
Спасибо. Я обновил вопрос, пожалуйста, взгляните. Речь идет о переупорядочении доступа к памяти в GUPS – osgx
@Per Ekman, какой эффект даст здесь ivdep? – osgx