1.Является ли F # подходящим инструментом для вычислений HPC на таких серверах?
Это (F #), как язык, может поощрять код, который хорошо работает параллельно - по крайней мере, частьэто сокращение изменчивости состояния и функций высшего порядка - это может , а не будет .Однако с помощью HPC существует множество специализированных языков программирования / компиляторов и / или способов распределения нагрузки (например, совместно используемая единая память или распределенные микроядра).F # - это просто язык программирования общего назначения: он может иметь или не иметь доступ (например, привязки могут существовать или не существовать) к различным методам.(Это относится даже к нераспределенным параллельным вычислениям.)
2.Реально ли использовать до 100% ЦП для решения реальной проблемы?
Это зависит от того, что является ограничивающим фактором.В разговоре с моим другом, который занимается 5k + 100k + ядром исследований и разработок HPC, обмен данных и время простоя обычно являются ограничивающим фактором (конечно, этонамного большее n :-) и поэтому даже небольшие улучшения в IO (эффективность или другой алгоритм) могут привести к значительному выигрышу.Не забывайте о стоимости простого перемещения данных между процессорами / кэшами на одной машине!И, конечно же, постоянно медленный дисковый ввод-вывод ...
3.Что я должен сделать, чтобы получить высокую скорость?Все в одной большой параллели для цикла, поэтому я ожидаю, что это все, что я должен делать ...
Узнайте, где медленная часть (и), и исправьте ее (их).) :-) Например, запустить анализ профиля.Имейте в виду, что это может потребовать использования совершенно другого алгоритма или подхода.
4.Если F # НЕ является подходящим языком, то что это за язык?
Хотя я и не спорю об этом, мой докторский друг использует / работает над Charm ++ : это очень сфокусированный языкдля распределенных параллельных вычислений (не рассматриваемая среда, но я пытаюсь подчеркнуть :-) - F # пытается быть достойным языком общего назначения.