Как обрабатывать большое пакетное умножение в огне массива

Я новичок в arrayfire, и сейчас у меня есть некоторые проблемы. В настоящее время я делаю большую партию матричных умножений, как показано ниже, но мне не хватает памяти. Может ли кто-нибудь показать мне пример кода для решения этой проблемы?

    int n = 60;
    int m = 18000;
    int k = 600;
    int t = 200;            
    af::array A = randu(m, k, t); 
    af::array B = randu(k, n);   
    af::array C = af::constant(0, m, n, t); 
    C = matmul(A, B);

person lzw12345    schedule 11.02.2020    source источник
comment
Только первый массив содержит 18000*600*200 = 2,16 миллиарда элементов = 8,64 Гб памяти. Действительно ли у вашего графического процессора есть 10 ГБ свободной памяти?   -  person talonmies    schedule 11.02.2020
comment
Спасибо за быстрый ответ! Это 2080ti, так оно и есть, но я использовал это только как пример размера проблемы. Учитывая количество матриц, которые мне нужно будет использовать, мне все равно понадобится в 4 раза больше. Не могли бы вы показать мне эффективный способ передачи памяти между хостом и устройством для arrayfire для этого варианта использования?   -  person lzw12345    schedule 11.02.2020
comment
Нет, я не могу извиниться. Я не использую arrayfire в принципе   -  person talonmies    schedule 11.02.2020
comment
о, тогда не могли бы вы порекомендовать способ выполнить это на графическом процессоре? Это не должно быть arrayfire, это просто казалось самым простым способом   -  person lzw12345    schedule 11.02.2020
comment
stackoverflow.com/a/14558198/681865   -  person talonmies    schedule 11.02.2020