prog 1. Во-первых, какая версия? По слухам, баг с многопоточностью был в версиях до 1.5 включительно. Но вроде бы в 1.51 исправили. 2. Даже если 1.51, в чем проблема-то? Ну оберни все вызовы библиотечных функций критической секцией, да и все.
Использую версию ijl 1.5.4 Дык, я бы хотел, чтобы они работали параллельно в тредах. У программы назначение- сжимать битмапы в jpg, чем быстрее тем лучше.
prog Думаю как раз это нужно реализовать на асме самому. И быстрее будет, и проблем с многопроцессорными системами не будет.
В каком смысле самому? У меня просто в нескольких трэдах кодируются jpg-ги. В смысле- написать свю функц. кодирования в jpg?
Это, мягко говоря, не совсем разумный совет. Она быстрее чем в ijl врядли будет работать. Точнее- ни когда не будет.
Потому, что Intel Jpeg Library на то и сделан в Intel, с учетом всех возможностей Intel процсесоров. Есть много статей об этом. О реализации DCT и IDCT специально для процессоров Intel с SSE итд. В ijl как раз сделано все так, что бы по максимуму задействовать все возможности процессора. В Intel люди специально сидели и высчитывали и настраивали код так, чтобы он выполнялся идеально быстро на каждом семействе Pentium.
Эта версия библиотеки не thread-safety. Грубо говоря, функции в ней используют для рассчетиов одни и те же структуры в памяти, не задумываясь о том, что в этот же самый момент могут выполняться такие же функции параллельно в этом же процессе в других тредах.
prog http://software.intel.com/en-us/forums/intel-integrated-performance-primitives/topic/50201 Там только не про поддержку речь была, а про какой-то баг, связанный с многопоточностью.
Я не стал бы так уж идеализировать програмистов из Intel. Я не знаю, с учетом чего они и что делают, но даже ихний С-компилер в большинстве случае сливает мелкософтовскому. Это инженеры у них хорошие... прогеры так себе... а маркетологи - "№;"№!"№... извините, вырвалось... [offtop] вспомнилась хохма - на каком-то бенчмаркинге обнаружилось, что AMD'шные процы дают больший прирост производительности при использовании библиотеки от Intel, чем при аналогичной от AMD. Собственно это не хохма, хохма началась, когда выяснилось, что процы от Intel показали лучшие результаты при использовании библиотеки от AMD, чем при использовании своей "проверенной и всеучтенной" от Intel. Я тогда аж улыбнулся. [/offtop] Так что самописный код - тоже вариант. Правда jpeg - непростой алгоритм, но если есть энтузиазм и немного свободного времени... Насчет же библиотеки - я не думаю, что jpeg много выиграет от HT, если бы это был настоящий двухъядерник... Так что ИМХО SetAffinity - то что надо.