Как объясняется в сообщении в блоге, которым вы поделились, это довольно просто, как указано ниже.
Экосистема пакетов Julia уже содержит довольно много пакетов, связанных с GPU, ориентированных на разные уровни абстракции, как показано на рис. 1. На самом высоком уровне абстракции доменные пакеты, такие как MXNet.jl и TensorFlow.jl, могут прозрачно использовать графические процессоры в вашей системе. Более общая разработка возможна с ArrayFire.jl, и если вам нужна специализированная реализация CUDA линейной алгебры или алгоритма глубокой нейронной сети, вы можете использовать пакеты для конкретного поставщика, такие как cuBLAS.jl или cuDNN.jl. Все эти пакеты, по сути, являются оболочками для нативных библиотек, использующими интерфейсы внешних функций (FFI) Julia для вызова API библиотеки с минимальными накладными расходами.
Пакеты CUDAdrv и CUDAnative предназначены для прямого использования CUDA runtime API и написания ядер из самой Джулии. Я считаю, что именно здесь CuArray пригодится - грубо говоря, обернув собственные объекты Julia в формат, доступный для CUDA.
ArrayFire, с другой стороны, является универсальной библиотекой, которая объединяет все (cuBLAS, cuSparse, cuSolve, cuFFT), предоставленные CUDA для предметной области, в приятный интерфейс (функции). Помимо интерфейса для доменных библиотек CUDA, ArrayFire сам по себе предоставляет множество других функций в области статистики, обработки изображений, компьютерного зрения и т.д. -arrayfire-jit-code-generation/" rel="nofollow noreferrer">функция JIT, при которой пользовательский код компилируется в исполняемое ядро - проще говоря. ArrayFire.jl — это языковая привязка с некоторыми дополнительными специфическими для Julia улучшениями на уровне оболочки.
Это общая разница. С точки зрения разработчика, использование библиотеки (например, ArrayFire) в основном избавляет от необходимости поддерживать API CUDA и поддерживать/настраивать ядра для оптимальной производительности, что, как мне кажется, занимает много времени.
PS. Я являюсь членом команды разработчиков ArrayFire.
person
pradeep
schedule
25.03.2019