2014-01-30 4 views
0

Мне было интересно, какой лучший способ получить доступ к движку device_vector из кода хоста C++? Я написал API-интерфейс cuda для создания базовой векторной алгебры, поскольку хочу построить интерпретатор, аналогичный Matlab/Octave, где векторы хранятся на графическом процессоре и могут легко выполнять вычисления, такие как reduce, reduce_by_key и т. Д.Лучший способ получить доступ к device_vector из C++

I думал о том, чтобы получить исходный указатель из распределения device_vector и сохранить его в хэш-таблице с соответствующим именем переменной, но задавался вопросом, было ли лучшее решение.

ответ

1

Если вас интересует производительность, вы не должны пытаться получить доступ к thrust::device_vector непосредственно из кода хоста. Сначала скопируйте его в переменную хоста.

Если вы используете device_vector непосредственно из кода хоста, это легально, но тяга будет generate a device->host copy operation "под капотом", чтобы включить это. Это будет очень медленным для оптового доступа к данным.

Ударные необработанные указатели не полезны, так как разыменование их в главном коде приведет к сбою seg.

Несмотря на то, что у вас нет прямого отношения к вашему вопросу, вы можете найти интересный код в newton, набор шаблонов выражений для тяги.

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

  • Нет связанных вопросов^_^