Ответы с форумов MSDN

std::vector в C++ AMP

Date: 24.09.2018 11:59:24

List в C# и std::list в C++, это все же разные вещи (первое - массив переменной длины, второе - связный список). Но в C++ AMP, я полагаю, ни тот ни другой не нужен. Просто выделить памяти с запасом, и сделать первым элементом массива его длину.

Message 376

Date: 24.09.2018 15:51:16

Вот здесь есть пример, как создать array_view на основе вектора: https://social.msdn.microsoft.com/Forums/vstudio/en-US/0e69057f-05fb-47f1-b8e9-ca68efe97bbe/passing-an-arrayview-to-a-funciton?forum=parallelcppnative

Но не факт, что это вам нужно, так как там размер массива все равно в ходе расчета не меняется.

Message 375

Date: 25.09.2018 6:23:28

Стек реализуется элементарно, как я уже написал: выделить заранее память под максимально возможное (оцененное заранее) количество элементов и завести переменную под текущую глубину стека. Если у вас размер массива не доходит до сотен мегабайт, это не должно вызывать проблем с выделением памяти (если больше то да, нужно как-то разбивать на части, но я не не знаю, как это эффективно сделать в С++ AMP)

Message 373

Date: 25.09.2018 11:12:36

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

Что касается умножения векторов на матрицу, вроде динамический массив тут не нужен. Треугольник задается тремя векторами (как я понимаю), если умножить каждый на матрицу, всегда получится те же 3 вектора, ни больше ни меньше.


Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub