2008-12-11 5 views
5

Я хочу получить многоядерное программирование (а не язык) и задался вопросом, какое оборудование можно было бы рекомендовать для изучения этого поля. Моя цель - обновить существующий рабочий стол.Многоядерное программирование

ответ

1

Я бы рекомендовал, по крайней мере, четырехъядерный процессор.

1

Вы можете попробовать поработать CUDA. Это бесплатно, а не , что сложно использовать и будет запускаться на любой новой карте NVIDIA.

В качестве альтернативы вы можете получить PlayStation 3 и Linux SDK и выяснить, как запрограммировать процессор Cell. Обратите внимание, что следующая дешевая опция для разработки Cell BE на порядок дороже PS3.

Наконец-то любая современная материнская плата, которая возьмет Core Quad или четырехъядерный Opteron (получите хороший от Asus или какого-нибудь другого авторитетного производителя), позволит вам экспериментировать с многоядерной системой ПК за разумную сумму денег ,

0

Я согласен с другими, где я должен перейти на четырехъядерный процессор. Я также являюсь BIG FAN материнских плат ASUS (P5Q Pro отлично подходит для процессоров Core2Quad и Core2Duo)!

Ничья для многоядерного программирования заключается в том, что у вас есть больше ресурсов для ускорения работы. Если вы серьезно относитесь к многоядерному программированию, то я бы абсолютно получил четырехъядерный процессор. Я не верю, что вы должны получить новую архитектуру i7 от Intel, чтобы использовать многоядерную обработку, потому что все, что написано для использования Core2Duo или Core2Quad, будет лучше работать на новой архитектуре.

Если вы собираетесь разбираться в многоядерном программировании, то я бы получил хороший процессор Core2Duo. Помните, что это не только то, сколько ядер у вас есть, но и то, как FAST ядра обрабатывают задания. Мой Core2Duo, работающий на частоте 4 ГГц, обычно выполняет задания быстрее, чем мой Core2Quad, работающий на частоте 2,4 ГГц, даже с многоядерной программой.

Дайте мне знать, если это поможет! JFV

4

Четырехъядерный, поскольку он позволит вам выполнять проблемы, когда число параллельных процессов> 2, что часто не требует тривиализации проблем.

Я также хотел бы, для sheer geek squee, забрать хорошую карту NVidia и использовать API CUDA. Если у вас есть доллары, есть отдельная рабочая станция CUDA, которая подключается к вашему основному компьютеру через кабель и слот расширения.

1

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

К счастью, одна вещь остается верной: чем выше параллелизм, выставленный компьютером , тем больше условий гонки вы откроете.

Итак, если вы серьезно относитесь к программированию с многопоточным/базовым программным обеспечением, переходите к как можно большему количеству CPU ядрам. Имейте в виду, что ни гиперпоточность, ни SMT не позволяют обеспечить уровень параллелизма, предоставляемый несколькими ядрами.

6

Если возможно, я бы предложил получить двухъядерную машину, предпочтительно с четырехъядерными чипами. Конечно, вы можете получить однопроцессорную машину, но dual-socket позволит вам увидеть некоторые из эффектов NUMA-памяти, которые будут усугубляться по мере того, как подсчеты ядра становятся все выше и выше.

Зачем вам все это? Есть две огромные проблемы, стоящие многоядерные разработчиков прямо сейчас:

  1. модель программирования Параллельное программирование трудно, и есть (в настоящее время) не денешься это. Четырехъядерная система позволит вам начать играть с реальным параллелизмом и всеми популярными парадигмами (потоками, UPC, MPI, OpenMP и т. Д.).

  2. Память Всякий раз, когда вы начинаете иметь несколько потоков, будет существовать конкуренция за ресурсы, а стена памяти становится все больше и больше. A recent article at arstechnica описывает некоторые (очень предварительные) исследования в Сандии, которые показывают, насколько это может быть плохо, если текущие тенденции продолжатся. Многоядерные машины должны будут держать все под контролем, и это потребует, чтобы люди были хорошо знакомы с их системой памяти. Двойной разъем добавляет NUMA к микшированию (по крайней мере, на машинах AMD), что должно заставить вас начать этот трудный путь.

Если вы заинтересованы в дополнительной информации о несоответствиях производительности с несколькими сокетами машины, вы можете также проверить this technical report на эту тему.

Кроме того, другие предложили получить систему с графическим процессором с поддержкой CUDA, который, как я думаю, также является отличным способом получить многопоточное программирование. Это более низкий уровень, чем тот, о котором я упоминал выше, но, если можно, выбросьте один из них на свою машину. Новые компиляторы Portland Group имеют provisional support for optimizing loops with CUDA, поэтому вы можете играть с вашим GPU, даже если вы не хотите сами изучать CUDA.

2

Это зависит от того, что вы хотите сделать.

Если вы хотите изучить основы многопоточного программирования, вы можете сделать это на своем одноядерном ПК. (Если у вас есть 2 потока, тогда ОС будет переключаться между ними на одноядерном ПК. Затем, когда вы переходите на двухъядерный ПК, они должны автоматически запускаться параллельно на отдельных ядрах, для ускорения 2x). Это имеет то преимущество, что вы свободны! Недостатки в том, что вы не увидите ускорения (фактически параллельная реализация, вероятно, немного медленнее из-за накладных расходов), и этот багги-код имеет несколько более высокую вероятность работы.

Однако, хотя вы можете изучить многопоточное программирование на одноядерном ящике, большой поддержкой будет процессор с двумя ядрами (или даже с HyperThreading).

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

Если вы хотите узнать об алгоритмах работы на видеокартах, что является очень разной областью для x86 multicore, то получите CUDA и купите обычную графическую карту nVidia, которая ее поддерживает.

1

Я согласен с тем, что, в зависимости от того, что вы в конечном итоге хотите сделать, вы, вероятно, сможете обойтись только с вашей нынешней одноядерной системой. Многоядерное программирование - это в основном многопоточное программирование, и вы можете это сделать на одноядерном чипе.

Когда я был студентом, одним из наших проектов было создание поточно-безопасной реализации библиотеки malloc для C. Даже на одном основном процессоре этого было более чем достаточно, чтобы вылечить меня от моего желания попасть в мульти -программированное программирование. Я бы попробовал нечто вроде этого, прежде чем вы начнете думать о том, чтобы тратить много денег.

Смежные вопросы