F # как язык высокопроизводительных вычислений

Я разрабатываю код Решетки Больцмана (гидродинамика) с использованием F #. Сейчас я тестирую код на сервере с 24 ядрами и 128 ГБ памяти. Код в основном состоит из одной основной рекурсивной функции для эволюции во времени и внутри цикла System.Threading.Tasks.Parallel.For для итерации трехмерного пространства. Трехмерное пространство имеет размер 500x500x500, и один цикл занимает вечность :)

let rec timeIterate time =
  // Time consuming for loop
  System.Threading.Tasks.Parallel.For(...)

Я ожидаю, что сервер будет использовать все 24 ядра, то есть будет использовать 100%. Я наблюдаю, что загрузка составляет от 1% до 30%.

И мои вопросы:

  1. Подходит ли F # для вычислений HPC на таких серверах?
  2. Реально ли использовать до 100% ЦП для реальной проблемы?
  3. Что мне делать, чтобы получить высокую скорость? Все находится в одном большом параллельном цикле for, поэтому я ожидал, что это все, что я должен делать ...
  4. Если F # НЕ является подходящим языком, какой язык?

Спасибо за любые предложения.

РЕДАКТИРОВАТЬ: Это не делает ничего разумного, и я надеюсь, что я не внес никаких ошибок, удалив код :)

Файл запуска - ShearFlow.fs, а в нижней части файла -

let rec mainLoop (fA: FArrayO) (mR: MacroResult) time =
  let a = LBM.Lbm.lbm lt pA getViscosity force g (fA, mR)
12
задан Oldrich Svec 4 November 2010 в 13:20
поделиться