Я пытаюсь понять, что на самом деле происходит, когда вы хотите использовать более одного ядра в Haskell. This дает хорошее введение, но IMHO не очень критично и оставляет много вопросов открытым.Haskell и Multicore, что действительно происходит
Когда я использую парный комбинатор или forkIO в своем коде и компилирую его с флагом -threaded, что в конечном итоге решает, получаю ли я поток ОС или нет? Это компилятор или ОС?
Если я использую forkOS, который всегда должен создавать поток ОС, освобождает ли я меня от возможностей базовой ОС?
Чтобы уточнить мой вопрос: Я предполагаю, что в многоядерном мире базовая/установленная ОС имеет ограничения в отношении того, сколько ядер она может иметь смысл и использовать. Все, что я делаю в Haskell, урезано возможностями ОС? Или, есть ли какие-либо способы (что они?), Чтобы быть лучше, чем ОС, в некотором смысле, что если у хоста есть 12 ядер и мастеров OS 8, могу ли я нажать это дальше, написав смарт-приложения в Haskell или тогда все, что я запускаю на этом хосте с этой ОС, ограничено умным использованием 8 ядер?
Если ОС говорит, что вы не имеют более восьми ядер, вы фактически не имеют более восемь ядер. –
@ Daniel Fischer OS сообщает мне, какие ядра там, что не обязательно означает, что они могут понять их/использовать их все, не так ли? –
Не обязательно, это правда. Но если вы бежите на голом металле, ограничения ОС - это жесткие ограничения для вас. До сих пор я не слышал о реализации Haskell на голом металле. К счастью, современная ОС может осмыслить все ядра, которые вы, скорее всего, будете иметь в ближайшем будущем. –