Re[17]: Манипулирование большими структурами данных
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 29.07.08 09:42
Оценка:
Здравствуйте, remark, Вы писали:

R>Я так понимаю, что многопоточную очередь можно сделать прямо из MVar'ов или TVar'ов, т.е. в каждом узле очереди в каком-то виде будет присутствовать MVar (TVar). Это будут *не* иммутабельные структуры, но тем не менее ФП, т.к. Haskell


Работа с MVar может проводиться только в IO. Это мутабельная структура, верно. Аналогично TVar в монаде STM, которая опять таки ракрывается только в IO через atomically. IO же — это выход за пределы ФП, хотя это уже философия

MVar/TVar в каждом узле — это и есть каналы, ага.

R>Ну да, они не очень заточены под такого рода вещи. Они разрабатывались в предположении, что таких вещей как кэш вообще не существует...


Я вот о его важности только из твоих постов узнаю.

R>А там же вроде есть встроенный С


Где можно почитать? Что то я совсем не в курсе. GHC может генерить в C, исходники могут использовать #ifdef и т.д. директивы, есть FFI.
Встроенный С? Первый раз слышу.

R>Чтобы записать в переменную ядру/процессору надо получить *всю кэш-линию* в эксклюзивный доступ (себе в кэш), если последним в какую-либо переменную в этой *кэш-линии* записывало другое ядро, то сейчас кэш-линия находится у него в кэше, следовательно надо перемещать кэш-линию от одного ядра другому — это физическое перемещение, которое включает отправку кэш-линии по какой-то шине или каналу между ядрами. На современных многоядерных процессорах Intel/AMD такое перемещение занимает 200-300 тактов.


Стало понятнее, спасибо.
Re[18]: Манипулирование большими структурами данных
От: remark Россия http://www.1024cores.net/
Дата: 29.07.08 10:06
Оценка:
Здравствуйте, lomeo, Вы писали:

R>>А там же вроде есть встроенный С


L>Где можно почитать? Что то я совсем не в курсе. GHC может генерить в C, исходники могут использовать #ifdef и т.д. директивы, есть FFI.

L>Встроенный С? Первый раз слышу.

http://friggeri.net/blog/2008/02/26/ciml-c-in-ocaml



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[19]: Манипулирование большими структурами данных
От: Курилка Россия http://kirya.narod.ru/
Дата: 29.07.08 10:11
Оценка: 10 (1)
Здравствуйте, remark, Вы писали:

R>Здравствуйте, lomeo, Вы писали:


R>>>А там же вроде есть встроенный С


L>>Где можно почитать? Что то я совсем не в курсе. GHC может генерить в C, исходники могут использовать #ifdef и т.д. директивы, есть FFI.

L>>Встроенный С? Первый раз слышу.

R>http://friggeri.net/blog/2008/02/26/ciml-c-in-ocaml



OCaml != GHC (Glasgow Haskell Compiler)
Хотя для хаскеля есть Harpy (правда не знаю можно ли оптимизацию с его помощью сотворить)
Re[20]: Манипулирование большими структурами данных
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 29.07.08 10:21
Оценка:
Здравствуйте, Курилка, Вы писали:

К>OCaml != GHC (Glasgow Haskell Compiler)

К>Хотя для хаскеля есть Harpy (правда не знаю можно ли оптимизацию с его помощью сотворить)

Ух, ты! Библиотечный встроенный асм, прикольно

Паддинги на таких вещах не сделаешь, нам же надо описывать типы данных, выравнивания и т.д.
Re[21]: Манипулирование большими структурами данных
От: Курилка Россия http://kirya.narod.ru/
Дата: 29.07.08 10:28
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Здравствуйте, Курилка, Вы писали:


К>>OCaml != GHC (Glasgow Haskell Compiler)

К>>Хотя для хаскеля есть Harpy (правда не знаю можно ли оптимизацию с его помощью сотворить)

L>Ух, ты! Библиотечный встроенный асм, прикольно


L>Паддинги на таких вещах не сделаешь, нам же надо описывать типы данных, выравнивания и т.д.


А, ну да, там же структуры данных не описываются...
Но если код писать можно, то почему бы и не структуры? Хотя как конкретно — хз.
Re[20]: Манипулирование большими структурами данных
От: remark Россия http://www.1024cores.net/
Дата: 29.07.08 10:36
Оценка:
Здравствуйте, Курилка, Вы писали:

L>>>Встроенный С? Первый раз слышу.


R>>http://friggeri.net/blog/2008/02/26/ciml-c-in-ocaml


К>OCaml != GHC (Glasgow Haskell Compiler)

К>Хотя для хаскеля есть Harpy (правда не знаю можно ли оптимизацию с его помощью сотворить)

А ну да, туплю...


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[22]: Манипулирование большими структурами данных
От: remark Россия http://www.1024cores.net/
Дата: 29.07.08 10:49
Оценка:
Здравствуйте, Курилка, Вы писали:

К>>>OCaml != GHC (Glasgow Haskell Compiler)

К>>>Хотя для хаскеля есть Harpy (правда не знаю можно ли оптимизацию с его помощью сотворить)

L>>Ух, ты! Библиотечный встроенный асм, прикольно


L>>Паддинги на таких вещах не сделаешь, нам же надо описывать типы данных, выравнивания и т.д.


К>А, ну да, там же структуры данных не описываются...

К>Но если код писать можно, то почему бы и не структуры? Хотя как конкретно — хз.


Асм, С, какая разница, всё одно

Да, со структурами проблема, не понятно откуда память выделять... если бы был интерфейс к подсистеме памяти, то из асма можно было бы создать управляемый объект, тогда было бы другое дело. Хотя если в языке есть строчки, то можно что бы вызывающий код создал строчку нужного размера и передал бы её в асм, а в асме можно использовать эту строчку как буфер под произвольный объект. Да, это будет забавное программирование на функциональном языке


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[23]: Манипулирование большими структурами данных
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 29.07.08 12:21
Оценка:
Здравствуйте, remark, Вы писали:

R>Да, со структурами проблема, не понятно откуда память выделять... если бы был интерфейс к подсистеме памяти, то из асма можно было бы создать управляемый объект, тогда было бы другое дело. Хотя если в языке есть строчки, то можно что бы вызывающий код создал строчку нужного размера и передал бы её в асм, а в асме можно использовать эту строчку как буфер под произвольный объект. Да, это будет забавное программирование на функциональном языке


Зачем такие извращения?? Есть же типы Word32, например. Делаем unboxed массив (можно alloc делать, есть указатели). Или через FFI.
Просто всё это попахивает садомазохизмом
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.