Как программировать I F #, в котором используется процессор с несколькими ядрами? Скажите вместо multithread или async? На языке python у них есть многопроцессорный модуль, но что эквивалентно для F #?Как сделать многоядерное программирование в F #
1
A
ответ
0
Добавление пару указателей на то, что уже говорилось в комментариях:
- Посмотрите this blog post by Don Syme, который охватывает основы асинхронном
- Или посмотреть на this blog post by Tomas Petricek с примерами параллельных
for
петель.
1
Есть несколько подходов для распараллеливания в F#
F#
используетCLR
иCTS
поэтому можно использовать обычный .NET конструкции, как вы это делаете вC#
. Например:Thread
,BackgroundWorker
,AutoResetEvent
и т.д. DetailsF#
имеет встроенную в конструкцию, называемую «асинхронные рабочие процессами» Details- Там находятся некоторые рамки, которые позволяют вам выбрать подходящую модель параллелизма. Например Hopac
0
Если Вы intereseted в программировании GPU (который тесно связан с многоядерной, или даже manycore) в F #, посмотрите в Alea GPU, которая позволяет Вам легко использовать F # для таких технологий, как CUDA.
Для других опций программирования GPU в F #, посмотрите here.
Вы также можете попробовать использовать модель актера. Akka.NET имеет хороший API F #.
Существует также incoming book, что в целом можно считать ответом на вопрос (еще не прочитал его).
Один из вариантов - [Async.Parallel] (https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/async.parallel%5B't%5D-method-%5Bfsharp%5D). У меня также был некоторый успех с использованием [Параллельные последовательности] (http://fsprojects.github.io/FSharp.Collections.ParallelSeq). –
Вы используете несколько ядер из одного процесса при использовании async или обычной многопоточности .NET. Поэтому предпосылка этого вопроса кажется мне самой. – scrwtp
Так же, как говорит Марк Симан. И [Nessos Streams] (http://nessos.github.io/Streams/) есть примеры PSeq. Существует также PLinq, а также есть Parallel в C#. Можете ли вы показать пример того, что вы хотели бы распараллелить? – s952163