Да, это правильно с точки зрения программного обеспечения.
на одной машине они взаимозаменяемы, и я получу одинаковые результаты.
Чтобы четко понять «кластер» и «ядра», я предлагаю думать на уровне «аппаратного обеспечения» и «программного обеспечения».
На аппаратном уровне «кластер» означает компьютеры, подключенные к сети, которые могут работать вместе посредством связи, например, через сокет (нужны дополнительные операции инициализации/остановки, как вы указали stopCluster
). В то время как «ядра» означают несколько аппаратных ядер в локальном ЦП, и они обычно работают вместе с общей памятью (не нужно явно отправлять сообщение от А к Б).
Иногда на программном уровне граница между cluster
и cores
не так уж и ясна. Программа может запускаться локально на ядрах или удаленно на кластере, и программному обеспечению высокого уровня не нужно знать подробности. Таким образом, мы можем смешивать два режима, например, использовать явную коммуникацию в локальном режиме как настройку cl
на одном компьютере, а также можем запускать многоядерные процессоры на каждом из удаленных компьютеров.
Возвращаясь к вашему вопросу, равны ли настройки cl
или cores
?
С точки зрения программного обеспечения это будет то же самое, что программа будет запускаться на том же количестве клиентов/серверов, а затем получать те же результаты.
От железа может отличаться. cl
означает явную связь, а cores
- общую память, но если высокоуровневое программное обеспечение очень хорошо оптимизировано. На локальном компьютере обе настройки будут включены в один и тот же поток. Сейчас я не особо углубляюсь в doParallel
, поэтому не уверен, что это одно и то же.
Но на практике лучше указать cores
для одной машины и cl
для кластера.
Надеюсь, это поможет вам.
person
Patric
schedule
11.01.2016