2012-11-17 3 views
3

Я пытаюсь использовать cuda с библиотекой с несколькими точками GNU (gmp). Когда я добавляю команды gmp, такие как mpf_init() в свой код устройства, я получаю эту ошибку компилятора: tlgmp.cu (37): ошибка: вызов функции хоста («__ gmpf_init») из функции __ device__/__ global__ («histo»)) не допускается.link cuda with gmp

Возможно ли переопределить инструкции gmp, чтобы они могли использоваться в коде устройства?

+0

нет на уровне библиотеки, нет. Библиотека скомпилирована для x86 и не включает функции, скомпилированные для работы на устройстве. Поскольку это открытый исходный код, следует пройти через библиотеку функций на исходном уровне и создать новую библиотеку (или любые необходимые вам функции), которые заполняются необходимыми __ host__ __ device__ украшениями и, возможно, другими изменениями, тогда передайте этот код через nvcc для создания функций, вызываемых устройством. –

+0

Просто googling вокруг, [эта библиотека CUMP] (http://www.hpcs.cs.tsukuba.ac.jp/~nakayama/cump/) появилась, когда я googled cuda gmp. Может стоить взглянуть. –

+0

Я уже нашел эту библиотеку самостоятельно и посмотрел пример файла axpy.cu. Этот пример включает gmp.h, а также использует стандартные команды gmp в коде устройства (mpf_mul(), mpf_add()). Поэтому он должен выдать такое же сообщение об ошибке, если автор не использовал модифицированную версию библиотеки gmp. –

ответ

2

Библиотека GMP скомпилирована для хоста и поэтому не может использоваться непосредственно в коде устройства. Это прямая причина ошибки, которую вы видите.

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

Другой альтернативой может быть исследование CUMP library.

+0

Рабочая ссылка для CUMP: https://github.com/skystar0227/CUMP – masterxilo

+0

Другой вариант: http://homepages.laas.fr/mmjoldes/campary/ – masterxilo