можно ли использовать оперативную память других компьютеров для параллельных вычислений Mathematica Light Grid Server 7? Если да, то как?
Как я могу поделиться памятью для параллельных вычислений в Mathematica?
1 ответ
Mathematica реализует параллельные вычисления с помощью нескольких ядер (нескольких процессов), которые могут даже выполняться на разных машинах. Существует одно основное ядро, с которым вы взаимодействуете напрямую, и несколько подядер (контролируемых главным ядром), которые выполняют эту работу.
короче говоря: вы не можете иметь прямые доступ к памяти других машин, но вы можете полностью использовать его, запустив subkernel на каждой машине.
вы не упомянули конкретную проблему вы пытаетесь решить, но если вам нужно обработать большой набор данных, который не помещается в память одной машины параллельно, вы можете сделать следующее:
- сначала разделите данные на управляемые блоки.
пусть каждый из подядер загружает кусок и обрабатывает его, получая результат, который не занимает много памяти.
несколько путей контролировать subkernels от полностью ручного к полностью автоматическому.
ParallelEvaluate[]
даст вам мелкозернистый контроль над каждым ядром. Вы также можете использовать$KernelID$
переменная, чтобы решить, какая часть набора данных должна быть загружена в каждое ядро. См.документация для сведения.наконец, результаты будут либо собраны в главном ядре (если результат не занимает много памяти), либо будут записаны на диск из каждого подядра (если результат такой же большой, как и входные данные data)
один важный момент: для того, чтобы некоторые переменные не были автоматически разделены между ядрами (и занимали ценную память), вам нужно поместить их в отдельный контекст,как описано здесь и в нем ссылки.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]