У меня есть карта с двумя графическими процессорами под названием Titan Z. У меня есть Matlab 2016a, пытающийся решить набор разреженных уравнений Ax=b
для разных значений «b
». Titan Z имеет два графических процессора и 6 ГБ оперативной памяти на каждый графический процессор.
Вот в чем проблема.
- Если я решаю задачу
Ax=b
на 1 графическом процессоре, скажем, размер матрицы «A
» составляет 2 ГБ, Matlab копирует эту матрицу в память каждого графического процессора. GPU-Z сообщает, что каждый GPU имеет 2 ГБ данных и работает только 1 GPU. - Если я решаю две задачи
Ax=b
на 2 графических процессорах, скажем, размер матрицы «A
» составляет 2 ГБ, Matlab снова дважды копирует эту матрицу в vram каждого графического процессора. Теперь GPU-Z сообщает, что каждый GPU имеет 4 ГБ данных и два GPU работают одновременно. - Если я одновременно пытаюсь решить проблему с «4 ГБ», драйвер Nvidia сбой из-за нехватки видеопамяти. Но я могу решить это на одном графическом процессоре. не на 2 GPU одновременно.
Проблема в том, что Matlab копирует эти матрицы дважды, когда это не нужно, что более интересно, он делает это, когда два графических процессора используют одну и ту же матрицу «A
», но разные векторы «b
».
Как я могу решить эту проблему?
spmd
или аналогичный? - person Edric   schedule 27.07.2016gpuArray
внутри циклаparfor
? Что произойдет, если вы построитеgpuArray
внутриparfor
? - person Edric   schedule 28.07.2016b
- person coercion   schedule 28.07.2016