Здравствуйте, уважаемые эксперты!
В Workbench в Tools -> Solve Process Settings -> My Computer -> Advanced ставлю в Distribure Solution 8 ядер процессора. На работе у меня 8-ядерный AMD, дома 8-потоковый Core i7. Что там, что там при любом решателе во время подготовки решения мне выдаёт ошибку, что запрошено 8 ядер процессора, а есть всего 4. В итоге при расчёте задействовано всего 50% процессора. Подскажите, пожалуйста, уважаемые эксперты, почему так происходит и каким образом задействовать все 8 ядер/потоков и 100% мощности процессора.
Второй вопрос - при решении в режиме Out-of-core у меня используется не вся оперативная память, а, к примеру, 16 гб из 32. Есть ли возможность задействовать всю оперативку?
С уважением, Владимир.
Здравствуйте. Mechanical использует только реальные ядра в независисмости от того сколько запрошено.
На процессорах AMD (в отличие от intel) имеет смысл включить HYPERTHREADING при помощи переменной ANS_ALLOW_HYPER_THREADING = 1
По поводу оперативной памяти:
Тут можно указать сколько памяти ансис может занимать.
Здравствуйте!
Большое спасибо за Ваш ответ!
Получается, что для 8-потокового Core i7 загрузить его на 100% одной задачей вообще невозможно - Mechanical будет брать 4 ядра и грузить процессор на 50%?
Указанную переменную нужно создавать в Windows в переменных среды?
По поводу оперативной памяти. Если указывать в приложенном Вами окне память, то АНСИС будет брать не только оперативную память, но и виртуальную (файл подкачки). В частности, если у меня 32 гб ОЗУ +30 гб файл подкачки, то можно указать максимум около 57 гб (это те же 62 гб за вычетом того, что висит в оперативке в данный момент). При это высока вероятность того, что на каком-то этапе решения АНСИСу перестанет хватать памяти, поскольку какая-то из сторонних программ забьёт часть оперативки, и общей памяти, доступной для решателя, станет меньше, чем 57 гб. Если же ставить меньше, то ОЗУ все не используется. С этим и связано затруднение.
Да.
Да.
По поводу оперативной памяти рекомендую обратиться к теме, многое уже обсуждалось там.
Хорошо, большое спасибо!
Ту тему, кстати, тоже я создавал)))
Попробовал создать переменную, всё равно при увеличении числа процессоров до 8 выдаёт такую ошибку:
Вставлю пять копеек.
При использовании 4 ядер процессора с 4 физическими ядрами с точки зрения вычислений с плавающей точкой он загружается на 100% своих возможностей, т.к. количество FPU (floating point unit) равно количеству физических ядер. Проценты загрузки, которые показывает винда, в данном случае не показательны.
Процессоры AMD не поддерживают HyperThreading, но винда видит половину ядер как логические. Это происходит потому, что у оптерона на 2 физических ядра один общий FPU. Но этот FPU 256-битный, и может делиться на два неконкурентных 128-битных (см. напр. https://it.slashdot.org/comments.pl?sid=3230805&cid=41879541, то же самое мне говорил Павел Станавов из AMD Россия), поэтому с точки зрения вычислений все AMDшные ядра полноценны. Поэтому с оптеронами нужно включать упомянутую Сергеем переменную. Проблема только в том, что механика на процессорах AMD вообще фигово считается (скорее всего, из-за отсутствия соответствующей оптимизации кода).
Спасибо! Теперь немного понятно стало)
Но всё равно не работают 8 ядер. Я вот посмотрел, может, это из-за того, что используется MPI Type: INTELMPI?
вы переменную окружения добавили?
После нескольких перезагрузок заработало. Большое спасибо ещё раз!
Теперь пытаюсь разобраться, чтобы всю оперативную память под расчёт забирал.
В современных версиях ансис не рекомендуется использовать какие-то дополнительные настройки работы с памятью, он работает с памятью самостоятельно и автоматически выбирает подходящий режим (in-core или out-of-core)
Добавить комментарий