Многоядерное программирование

Преимущество первого способа заключается в использовании приведенной тогда нотации, стиля представления тестов. Это делает ваши тесты более читабельными и является частью BDD ( поведенческая разработка ). Если вы добавите часть «затем» вместо asString (), вы могли бы сделать утверждения в одной строке. Чтобы добавить файлы cookie в первом случае, добавление файла cookie после заданного было бы достаточно, например: данный (). Cookie ("my_cookie_name", "my_cookie_value") ... и т. Д. Во втором случае вам просто нужно установить cookie для httpRequest. Более подробная информация здесь .

5
задан harriyott 11 December 2008 в 22:54
поделиться

8 ответов

Если бы вообще возможный, я предложил бы получить машину двойного сокета, предпочтительно с четырехъядерными микросхемами. Можно, конечно, получить машину единственного сокета, но двойной сокет позволил бы Вам начать видеть некоторые эффекты памяти NUMA, которые будут усиленными, поскольку базовые количества становятся выше и выше.

Почему Вы заботитесь? Существует две огромных проблемы, стоящие перед многоядерными разработчиками прямо сейчас:

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

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

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

Кроме того, другие предложили получить систему с CUDA-способным GPU, который я думаю, также отличный способ войти в многопоточное программирование. Это ниже находится на одном уровне, чем материал, который я упомянул выше, но бросьте одного из тех, которые на Вашей машине, если Вы можете. Новые компиляторы Portland Group имеют временную поддержку оптимизации циклов с CUDA, таким образом, Вы могли играть вокруг со своим GPU, даже если Вы не хотите изучать CUDA сами.

6
ответ дан 18 December 2019 в 10:49
поделиться

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

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

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

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

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

2
ответ дан 18 December 2019 в 10:49
поделиться

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

Я был бы также, для чистого фаната squee, брать хорошую карту Nvidia и использовать API CUDA. Если у Вас есть маркеры, существует автономная рабочая станция CUDA, которая включает Ваш основной компьютер через кабель и слот расширения.

4
ответ дан 18 December 2019 в 10:49
поделиться

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

1
ответ дан 18 December 2019 в 10:49
поделиться

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

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

1
ответ дан 18 December 2019 в 10:49
поделиться

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

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

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

1
ответ дан 18 December 2019 в 10:49
поделиться

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

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

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

1
ответ дан 18 December 2019 в 10:49
поделиться

Я соглашаюсь с другими, где я обновил бы до четырехъядерного процессора. Я - также БОЛЬШОЙ ПОКЛОННИК Материнских плат ASUS (P5Q Pro превосходен для процессоров Core2Quad и Core2Duo)!

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

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

Сообщите мне, помогает ли это! JFV

0
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: