Даёшь SIMD с человеческим лицом
Apr. 16th, 2010 12:39 amВопрос к Паре–тройке человек, которые понимают в параллельных вычислениях.
Часть задач хорошо представляются форме MIMD и неплохо выполняются на параллельных CPU (и даже на «полутораядерных» процессорах с Intel HyperThreading). Это те задачи, которые разбиваются на сравнительно небольшое количество массивных кусков с хорошей кучностью, предсказуемостью и «монотонностью» обращения к данным. Например, сжатие видео и звука или даже перемножение матриц как тривиальным способом, так и алгориѳмом Штрассена вполне к ним относится. А сортировки одномерных массивов — не вполне, т.к. скачут по памяти, как ненормальные.
Другая же часть хорошо представляется как SIMD и может работать, например, на GPU (хотя сам факт того, что такие хорошие параллельные вычислительные модули намертво вмуровывают в графические ускорители, возмущает многих, в т.ч. и меня). Здесь требуется ещё больше единообразия, за счёт чего достигается возможность пропустить через несколько десятков туповатых, но шустрых процессоров безумное количество данных. К таким задачам относятся, например, отдельные шаги алгориѳма Гаусса решения СЛАУ (и прочих векторных алгоритмов). А весь метод Гаусса монолитно загонять в SIMD уже смысла нет (а у GPU и ума на него может не хватить).
Для первого класса задач в не таком уж и далёком 1997 году была сделана такая замечательная вещь, как OpenMP, которая года с 2005 без дополнительных усилий поддерживается на системах для домохозяек и для использования требует (а точнее не требует) соответствующей квалификации. И если в конце 1980-х советская домохозяйка могла обсчитать будущее вязаное изделие при помощи, скажем, «Микроши» (http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D1%88%D0%B0), то через 20 лет её дочка уже спокойно могла это сделать в несколько потоков при помощи почти (не в терминах теории меры, разумеется) любого ПК с почти любой ОС.
Для второго же класса задач до сих пор требуется хорошенько помучиться с вещами типа OpenCL, например. Вроде как сами по себе они относительно удобные, но пока настроишь, забудешь для чего вообще собрался их использовать.
Теперь полтора вопроса: есть ли в области SIMD для домохозяек подвижки в направлении чего-нибудь по юзабельности близкого к OpenMP и вообще доколе?
Спасибо.
Часть задач хорошо представляются форме MIMD и неплохо выполняются на параллельных CPU (и даже на «полутораядерных» процессорах с Intel HyperThreading). Это те задачи, которые разбиваются на сравнительно небольшое количество массивных кусков с хорошей кучностью, предсказуемостью и «монотонностью» обращения к данным. Например, сжатие видео и звука или даже перемножение матриц как тривиальным способом, так и алгориѳмом Штрассена вполне к ним относится. А сортировки одномерных массивов — не вполне, т.к. скачут по памяти, как ненормальные.
Другая же часть хорошо представляется как SIMD и может работать, например, на GPU (хотя сам факт того, что такие хорошие параллельные вычислительные модули намертво вмуровывают в графические ускорители, возмущает многих, в т.ч. и меня). Здесь требуется ещё больше единообразия, за счёт чего достигается возможность пропустить через несколько десятков туповатых, но шустрых процессоров безумное количество данных. К таким задачам относятся, например, отдельные шаги алгориѳма Гаусса решения СЛАУ (и прочих векторных алгоритмов). А весь метод Гаусса монолитно загонять в SIMD уже смысла нет (а у GPU и ума на него может не хватить).
Для первого класса задач в не таком уж и далёком 1997 году была сделана такая замечательная вещь, как OpenMP, которая года с 2005 без дополнительных усилий поддерживается на системах для домохозяек и для использования требует (а точнее не требует) соответствующей квалификации. И если в конце 1980-х советская домохозяйка могла обсчитать будущее вязаное изделие при помощи, скажем, «Микроши» (http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D1%88%D0%B0), то через 20 лет её дочка уже спокойно могла это сделать в несколько потоков при помощи почти (не в терминах теории меры, разумеется) любого ПК с почти любой ОС.
Для второго же класса задач до сих пор требуется хорошенько помучиться с вещами типа OpenCL, например. Вроде как сами по себе они относительно удобные, но пока настроишь, забудешь для чего вообще собрался их использовать.
Теперь полтора вопроса: есть ли в области SIMD для домохозяек подвижки в направлении чего-нибудь по юзабельности близкого к OpenMP и вообще доколе?
Спасибо.