2

Я делал некоторые вычисления дома и на работе и заметил некоторые неожиданные проблемы с производительностью. Рабочая машина несколько более "серьезна", чем домашняя, но иногда домашняя машина превосходит рабочую. Мне любопытно, какова динамика - почему это должно быть, и если я могу настроить это вообще.

В конечном итоге на обеих машинах вычисления представляют собой множество очень больших вычислений с целочисленной линейной алгеброй произвольной точности (на основе библиотеки GNU Multi-Precision Library). Сокращение множества разреженных, но "больших" целочисленных матриц, поиск вершин на границе многогранников и т.д.

На моем домашнем компьютере (который имеет два ядра), если я выполняю стандартные вычисления только на одном ядре (второе ядро почти бездействует), это занимает 282 секунды.

На домашнем компьютере, выполняющем два идентичных параллельных вычисления (те же вычисления, что и выше), для каждого ядра требуется около 320 с.

На моем офисном компьютере, когда все ядра практически простаивают, за исключением одного ядра, выполняющего эти вычисления, это занимает 196 с.

На моем офисном компьютере, если у меня все 8 ядер работают на полную мощность, и одно из ядер выполняет вышеуказанные вычисления, для одного ядра, выполняющего вычисления, требуется 356 секунд.

Вот подробности на моем домашнем компьютере:

 cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 15
model name  : Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
stepping    : 10
cpu MHz     : 800.000
cache size  : 4096 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 10
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm ida tpr_shadow vnmi flexpriority
bogomips    : 4787.65
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 15
model name  : Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
stepping    : 10
cpu MHz     : 800.000
cache size  : 4096 KB
physical id : 0
siblings    : 2
core id     : 1
cpu cores   : 2
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 10
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm ida tpr_shadow vnmi flexpriority
bogomips    : 4787.98
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

rybu@rybu-laptop:~/prog/regina/exercise/4M-census/rank1/t$ 

и мой офисный компьютер:

процессор cat /proc /cpuinfo: 0 vendor_id: семейство процессоров GenuineIntel: 6 модель: 26 название модели: Intel® Core(TM) i7 CPU 950 @ 3,07 ГГц, степпинг: 5 CPU, МГц: 1600 000, размер кэша: 8192 КБ, физический идентификатор: 0 братьев и сестер: 8 id ядра: 0 ядер процессора: 4 apicid: 0 начальная apicid: 0 fpu: yes fpu_exception: yes уровень процессора: 11 wp: yes флаги: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush д.т.н. Acpi MMX fxsr ße sse2 сс ХТЫ тм РОВ системных вызовов пх rdtscp ого constant_tsc arch_perfmon УИБ БТС rep_good xtopology nonstop_tsc aperfmperf ПНИ dtes64 монитор ds_cpl VMX Эст tm2 SSSE3 CX16 xtpr pdcm sse4_1 sse4_2 POPCNT lahf_lm ида tpr_shadow vn FlexPriority епть VPID BogoMips: 6147,45 размера clflush : 64 cache_alignment: 64 размера адреса: 36 бит физического, 48 бит виртуального управления питанием:

процессор: 1 vendor_id: семейство процессора GenuineIntel: 6 модель: 26 название модели: Intel® Core(TM) i7 CPU 950 @ 3,07 ГГц, степпинг: 5 CPU, МГц: 1600 000 ca

1 ответ1

2

Gridengine не делает то, что вы хотите. Это для процессоров, которые не разделяют шину памяти, как ваши SMP-машины.

У вас есть правильное представление о попытке сохранить память вашей задачи в кеше. Вы делаете это, имея доступ ко всей памяти как можно ближе друг к другу как для инструкций, так и для данных. Не прыгайте с одного места на другое.

Системы SMP действительно оптимизированы для пропускной способности, а не задержки. Если задержка действительно так важна для вас, лучше всего разделить ее на задачу для каждого процессора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .