Переквалификация программистов не за горами

image

Теги: программный код, алгоритм, работа

Если в предыдущие десятилетия программирование для различных процессоров по большому счету отличалось незначительно, так как у процессора было одно ядро, которое работало все быстрее и быстрее, то теперь таких ядер стало 2, 4 и в ближайшей перспективе появятся системы с 6 и 8 ядрами на одном кристалле.

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

"На сегодня в мире существует явная нехватка разработчиков, способных создать программный код для параллельных компьютерных вычислений, выполняемых различными ядрами одного процессора. Нужно уделить самое приоритетное внимание академическому образованию, которое является важнейшим поставщиков молодых кадров из среды разработчиков", - говорит Ден Рид, директор подразделения масштабируемых вычислений Microsoft.

Если в предыдущие десятилетия программирование для различных процессоров по большому счету отличалось незначительно, так как у процессора было одно ядро, которое работало все быстрее и быстрее, то теперь таких ядер стало 2, 4 и в ближайшей перспективе появятся системы с 6 и 8 ядрами на одном кристалле. Такой подход требует иных программных алгоритмов и иной логики выполнения программ.

Отметим, что данная программа не является делом отдаленного будущего. Так, компании Intel и AMD уже полностью пересматривают всю линейку выпускаемых низкоуровневых компиляторов, а корпорация Microsoft намерена коренным образом переработать ядро Windows для того, чтобы оно поддерживало многопоточное ветвление выполняемого кода.

"Условно говоря, разные подходы можно сравнить с гоночной машиной и автобусом. Первая способна ехать очень быстро, но везет лишь одного человека, в то же время автобус едет куда медленнее, но он может везти десятки человек", - говорит Рид.

По словам аналитиков компании Forrester Research, на сегодня у процессоров почти не растут тактовые частоты, которые замерли на отметке в 2-3 ГГц, однако наращивается количество вычислительных ядер, поэтому необходимы программы, которые будут учитывать эту особенность и загружать мощности процессора по всем ядрам, не а по одному.

Вместе с тем, все специалисты говорят, что разработка кода для многоядерных процессоров - это более трудоемкий процесс, чем создание обычного "одномерного" кода. Однако этого усложнения не миновать, особенно в серверном софте, так как прогнозам аналитиков к 2009 году на рынке серверов появятся 8-ядерные процессоры, а далее прирост будет происходить еще более высокими темпами.

По словам Майка Лидена, технического директора компании TopCoder (создает продукты для разработчиков под маркой Borland), сегодня ситуация складывается таким образом, что мультипоточное программирование остается прерогативой мизерной прослойки среды разработчиков.

В Forrester говорят, что ведущие компании, такие как Intel, Microsoft, AMD и IBM уже начали работать над проблемой популяризации многоядреного программирования, но сегодня их усилия минимальны, а на принятие этой концепции в массах понадобятся не менее 5-6 лет. Майк Лиден говорит, что сама по себе концепция многопоточного программирования в мире разработчиков не нова. Первая статья по созданию нескольких потоков в рамках одного кода появилась в библиотеке MSDN еще в 1993 году, но с тех пор параллельные коды не нашли широкого применения в университетской среде и довольно ограниченно применялись в бизнесе. Вместе с тем, многие говорят о появлении нового поколения программных платформ, например таких как RapidMind, которые анализируют обычный программный код, например на С++, и через абстрактный слой команд и нитей разбивают его множество потоков. Однако профессионалы называют такое решение чисто идеологическим и совсем не идеальным.


или введите имя

CAPTCHA
Страницы: 1  2  
1
24-03-2008 12:51:10
Первая статья по созданию нескольких потоков в рамках одного кода появилась в библиотеке MSDN еще в 1993 годуМу-ха-ха пока мелкософт ваял статейки At a supercomputing conference in 1992 a committee was formed to define a message-passing standard. В 1993 уже был стандарт MPI 1.0 . более менее поддерживать венда стала его с выходом 2003 вантуза. на тот момент unix уже поддерживал 2ую версию MPI фиг знает сколько, а так же существовал живой openMP щас в 2008 макйкрософт будет всем доказывать что они пионеры паралельных вычислений. Ну просто даже уже не смешно от того насколько заказная это статья
0 |
1
24-03-2008 12:53:55
Добро пожаловать в будущее. Господа из микрософта наконец-то вы поняли что на дворе не восьмедесятые и не девяностые
0 |
1
24-03-2008 22:00:38
В 1993 уже был стандарт MPI 1.0 . более менее поддерживать венда стала его с выходом 2003 вантуза.Ну и где был твой линух в 1993году а? Клоун? Наверное уже тогда наступил вендекапец?
0 |
1
25-03-2008 09:38:08
Ты сам клоун, дятел... Где в сообщение хоть слово про линукс? там сказано про unix разницу объяснить или своими плесневелыми "мозгами" поймешь?
0 |
пограммист
13-09-2012 16:30:38
нет, господа! они выкачали бабло из предыдущей технологии, теперь пора делать деньги на следующей... nokia нынче тоже патенты продает... "подешевели" с них выхлопы
0 |
1
24-03-2008 13:05:33
жжошь! Ссылки по теме: * Китайские программисты подрывают обороноспособность США
0 |
1
24-03-2008 13:26:10
Не за горами переквалификация программистов в дворники.
0 |
1
26-03-2008 00:30:07
Да тут скоро и в сантехники переведут!
0 |
1
24-03-2008 13:37:27
все специалисты говорят, что разработка кода для многоядерных процессоров - это более трудоемкий процесс, чем создание обычного "одномерного" кода. Однако этого усложнения не миноватьЧто за хрень? Работа с многоядерным процом ничем не отличается от 1-ядерного или НТ-проца. Те же нити, те же события или сигналы между ними, тот же принцип построения - нагружай равномерно, делай по возможности асинхронную обработку, делай отдельные вычисления независимыми друг от друга и все будет гут. а как проц эти нитки квантовать будет и на сколько ядер, програмера вообще не должно касаться, если он не кернел девелопер
0 |
1
24-03-2008 15:59:53
Ога, только одна проблемка -- балансировка нагрузки (как вычислений, так и данных) между процессорами.
0 |
1
24-03-2008 16:21:34
А если ядер 16, а если 1024? Здесь совсем другой подход к программированию нужен. Кстати, ни C++, ни C# здесь не канают. А вот языки вроде Haskell выглядит привлекательно именно потому что теоретически позволяют компилятору эффективно параллелить код.
0 |
1
25-03-2008 04:20:20
Зависит от задачи. Если данные можно обрабатывать по независимым кускам (например рендеринг отдельных областей сцены, или разных кадров, или шифрование разных блоков (хотя тут с CBC проблема), или компрессия разных блоков, или подбор паролей из разных диапазонов, или компиляция разных .cc) - все параллелится без проблем, хоть на 2^32 ядер, на обычном C, и даже без использования потоков. Да хоть на shell. А вот если задачу так легко не разбить - ФП позволит каждую свою функцию выполнить как отдельный поток из-за отсутствия побочных эффектов и без необходимости блокировок, но ценой такого оверхеда, что в итоге это быдет выглядеть как жалкая попытка всего лишь нагрузить все ядра хоть чем-нибудь. Erland с своими тредами и сообщениями - пример гораздо лучший.
0 |
1
25-03-2008 11:22:14
но ценой такого оверхеда, что в итоге это быдет выглядеть как жалкая попытка всего лишь нагрузить все ядра хоть чем-нибудь. Сейчас да имеется проблема оверхеда, но есть шансы что компиляторы и ОС таки достаточно усовершенствуют. Потому что иного выхода нет, ты сам сказал: если задача явным образом допускает распараллеливание, его можно хоть на шелле сделать. Erlang - очень хороший язык, но он компилирует в байт-код. В принципе, это может стать узким местом, хотя сейчас это конечно быстрее чем Haskell.
0 |
1
24-03-2008 13:57:57
Сообщение ни о чем. Многопоточные приложения пишутся давно. Как минимум с появлением первых двупроцессорных систем. На дескотопе (не серверных компах) два процессора доступны уже почти 10 лет. Ничего сложного в этом нет, надо только быть аккуратным и понимать узкие места, где могут возникнуть проблемы из многопоточности. К сожалению революции в программировании не ожидается . А пора бы.
0 |
1
24-03-2008 17:46:19
Многопоточные - это многопоточные... А как ты будешь разбивать программный код своей проги на пару сотен потоков например? С сервернымим приложениями более-менее ясно вроде, на каждый сокет по потоку, сокетов много - хорошая балансировка. А вот что в случае десктопа? Как ты будешь разбивать прямой код на кучу потоков? В программировании и правда должна произойти революция.
0 |
1
24-03-2008 19:23:35
Тут много зависит от исходной задачи. Самый простой пример где многопоточность не проканает-численное интегрирование диффуры f^(n)(x)=G[x, f(x), f'(x), ..., f^(n-1)(x)]
0 |
24-03-2008 22:09:44
Как проф. программист могу сказать одно - это вообще не имеет отношения к программированию, это абстрактная математика. если задача допускает распараллеливание - тебе щастье. Если нет - хоть у тебя 1024 ядра, считаться будет на одном. И ничего с этим не сделаешь, против законов природы не попрешь... Настоящая революция в программировании будет только тогда, когда что-нибудь придет на смену фоннеймановской архитектуре. Подозреваю, это что-то будет из нейросетей...
0 |
1
25-03-2008 00:25:38
ну возможно не только нейросети.., сейчас ведь ведутся и разработки квантовых компьютеров.. вобщем поживем увидим, но 1 ясно точно сами кремнийевые полупроводниковые системы с классической архитектурой себя исчерпали, и увелчение количества ядер тут проблему не решит. необходим кординально новый пдход не только к программированию, но и архитектуре компьютеров
0 |
25-03-2008 00:37:23
Во-во... тока где он, этот подход ? Сам несколько лет работал в разработке нейросетей. Там во всем мире еще конь не валялся. Хотя теоретически возможности грандиозные. Но пока все лабораторные изыски, не более. У нас тоже ничего путного не вышло... Революция будет не в лабораториях микрочипов, а на листе бумаги с карандашом. А как идея станет ясна - там уж чипов наштампуют.Но нет пока нового гения, а жаль... Слишком уж в вопросе все запущенно. Почти уже очевидно, что он недетерминирован (то есть шумы и хаос так и прут) - так что красивой теории не выйдет, на сегодняшнем математическом языке...
0 |
1
25-03-2008 19:15:40
нейросети - инструмент решения узкого класа задач, но никак не инструмент параллелизма. скорее мультикоры уж и различная КУДА. т.е. векторно-усиленные процессоры. в NM6403 кстати такой подход себя оправдал
0 |
26-03-2008 00:35:30
Говорить в рамках нейросетей о параллелизме вообще некорректно. Там действуют совершенно особые принципы. Пусть мы их пока и не знаем, но их существование подтверждает сам факт нашего существования. Многие задачи, что человек решает как два пальца, ни на каком суперкомпьютере не решить, так как непонятно каким образом. А мозг все же довольно грубая и многократно избыточная и дико медленная (ДЕСЯТКИ ГЕРЦ в среднем)структура по сравнению даже с застарелым микропроцессором. Не тем путем идем, товарисчи. Совершенно не уверен, что новое программирование будет иметь хоть что-то общее с ныне существующим. Скорее всего, в основу будут положены принципы обучения систем, и утверждать так есть некоторые основания. В отличие от умного человека, умный компьютер можно будет клонировать-копировать 1:1. Хотя сомневаюсь, что на нашей жизни что-то достигнется. Кому это нафиг надо. Народ хватает мобилки с ноутами и рад до жопы, а тут финансирование наши родные партия и правительство урезали настолько, что дальше работать стало себя не уважать. Теперь за много большие деньги правлю буржуям индийский код. А с экранов трындят про инновационное развитие. гы гы, поржал...
0 |
26-03-2008 00:38:22
Забыл добавить. Строгого понятия нейросетей нет. По этим зачастую понимается черт знает что. Я подразумевал фундаментальный смысл, если говорить про воплощенные в железо частности, то это действительно инструмент решения узкого класса задач пока, не более.
0 |
Страницы: 1  2