2016-07-06 4 views
3

Я рассматриваю возможность покупки карты GPU для экспериментов с вычислениями в GPU в Julia. Как я вижу, сейчас есть два варианта: чипсеты NVIDIA или AMD.Опции для GPU-вычислений в Julia

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

Я использую систему на базе Windows 7. Любая помощь приветствуется.

ответ

9

Несколько моментов:

1) ArrayFire является довольно простой в использовании GPU платформу с интерфейсом Julia (https://github.com/JuliaGPU/ArrayFire.jl). Он работает как с графическими процессорами NVIDIA, так и с AMD.

2) Если вам нужны вещи, выходящие за рамки того, что находится в ArrayFire, то, как правило, больше поддержки карт NVIDIA через язык CUDA C, который является собственностью NVIDIA. Вы можете увидеть список всех пакетов GPU для Julia here. Как вы увидите, многие из них предназначены для CUDA, чем для OpenCL, которая является версией C, которая работает для написания ядер, работающих на NVIDIA или AMD. Но знайте, что если вы пройдете этот маршрут, вам нужно будет начать писать свои собственные ядра в C.

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

Но, я не думаю, что в открытом CL не так много, что не может быть сделано, и, вероятно, не слишком сложно научиться делать что-то с этим. Кроме того, OpenCL также имеет то преимущество, что он применим к широкому спектру высокопроизводительных платформ за пределами графических процессоров (например, для программирования на Intel Xeon Phi).

3) Вы должны обратить особое внимание на необходимость работы в одиночной или двойной точности для операций с плавающей запятой. Это имеет большое значение при выборе GPU от любого производителя. Например, у NVIDIA есть несколько графических процессоров, специально предназначенных для операций двойной точности (в основном, линии Tesla, а также Titan Black). Если вы выберете NVIDIA GPU, отличный от этого, вы получите 1/32 производительности для двойной точности, поскольку вы получите для одиночного. Чипы AMD, как правило, немного менее специализированы, более сопоставимо между одиночной и двойной точностью. Я полагаю, что есть некоторые варианты использования карт NVIDIA, которые будут более ценными, а другие, где AMD будет более экономичной.

4) Графические процессоры могут стать довольно дорогими (хотя на Ebay часто используются довольно хорошие варианты использования и т. Д.). Их радость заключается в том, что они могут делать (определенные) вычисления в разы, которые на порядки быстрее, чем процессоры. Но, чтобы получить это преимущество, вы часто будете тратить минимум на тысячи долларов (в частности, если вам нужно купить новую систему для поддержки мощного графического процессора, поскольку многие базовые компьютеры потребительского класса просто не поддерживают их, что Что ж). Если это вообще возможно, вам будет полезно в первую очередь выполнить пробную работу, чтобы выяснить, что именно вам нужно. Например, у NVIDIA есть тестовая программа, которую вы можете применить к here. Я никогда не использовал его, поэтому я не могу сказать так много. AMD, вероятно, имеет нечто подобное. В качестве альтернативы, если вы связаны с компанией или исследовательским учреждением, имеющим графические процессоры, или если у вас есть друг, который позволит вам ssh на свой компьютер и попробовать их, это может быть очень полезно при определении того, что вам нужно время.

5) Если вы посмотрите на разные карты, вы должны обратить пристальное внимание не только на то, сколько флопов на доллар, которые они доставляют (на желаемом уровне точности), но и такие вещи, как то, и, возможно, вопросы о том, насколько эффективно они поддерживают связь между несколькими графическими процессорами, а также между графическим процессором и процессором. Насколько мне известно, золотой стандарт для этих графических процессоров GPU и CPU-CPU - это новая карта NVIDIA P100. Это супер, супер дорого, хотя и сейчас доступно только в составе системы $ 100k + (из них 8 из них), купленной у NVIDIA. К концу года P100 должны быть доступны от других производителей. Они могут делать невероятные вещи с точки зрения скорости передачи между процессором и графическим процессором, но для этого есть высокая цена, и они не будут оправдывать цену, если все, что вы ищете, - это просто самый флоп на доллар.

+0

Спасибо за подробный ответ. Вы более или менее подтвердили мое впечатление. Я думаю, что пойдет по дешевой NVIDIA из-за лучшей поддержки, которую она предлагает. – InkPen

+0

@ InkPen Да, особенно если вы хотите просто одинарной точности, у NVIDIA есть новые, недорогие вещи (GTX 1080), которые обеспечивают отличную производительность. Это заставляет меня ревновать к людям, чьи вещи просто требуют единственной точности! –