• Регистрация
evzhur
evzhur 0.00
н/д

Использование для вычислений облачного сервиса

10.01.2021

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

Написал я программу в matlab, которая содержит много циклов и очень долго считает -- неделями. Считаю я на своем домашнем компьютере. Также пользуюсь приложением на андроиде. Когда пишешь программу на андроиде, то matlab, как я понял, отправляет информацию на некий облачный сервер и потом показывает мне результат вычислений. Очевиден вопрос -- так это поди можно и с домашнего компьютера отправить программу для вычислений на другой мощный компьютер. Я понимаю, что вопрос возможно наивен и все так уже делают 20 лет. Как это сделать?

Кто-нибудь использовал для вычислений суперкомпьютеры сбербанка или МТС? Я знаю, что у организации, в которой я учусь, есть договор об их бесплатном использовании. Сейчас очень актуально, ибо бесплатно может быть не всегда.

Теги

      10.01.2021

      Ответы

      • Хасбулат Нурмагомедов
        Хасбулат Нурмагомедов +43.63
        11.01.2021 04:02

        Во-первых, скорее всего, правильно используя матричную арифметику можно избавиться от большинства циклов, что многократно ускорит работу Вашего скрипта.

        Надо будет написать заметку на эту тему.

        Далее надо уже исходить из той лицензии, что есть у Вашей организации. И.п. возможностей много, а вот какие доступны - это вопрос. В командной строке надо написать 

        ver

        И прислать вывод.

        • aBoomest
          aBoomest+942.89
          11.01.2021 05:34
          • evzhur
            evzhur0.00
            11.01.2021 11:25

            Я эту статью читал. Все о чем там написано мной используется.

            • aBoomest
              aBoomest+942.89
              11.01.2021 12:12

              1. Откуда ж тогда циклы?
              2. На что именно тратится основное время?

              • Хасбулат Нурмагомедов
                Хасбулат Нурмагомедов +43.63
                11.01.2021 12:19

                Отличный вопрос, давайте профилировать Ваш код, чтобы на него ответить. https://www.mathworks.com/help/matlab/ref/profile.html

          • evzhur
            evzhur0.00
            11.01.2021 17:59

            Решается примерно следующая задача -- дано множество матриц размерности 4x4. Среди них надо найти все пары матриц A и B, для которых существует невырожденная матрица C такая, что A=С^(-1)*B*C. Матриц конечное число, так как их элементы это числа от 1 до 13, то есть количество матриц 13^16. При умножении и сложении указывается не само число, а его остаток при делении на 13 (то есть матрицы над простым полем по модулю 13).

            • Хасбулат Нурмагомедов
              Хасбулат Нурмагомедов +43.63
              12.01.2021 14:30

              Parallel toolbox. Jit Compilation.

              • evzhur
                evzhur0.00
                14.03.2021 14:39

                Всем привет. Помогите пожалуйста.

                Есть компьютер с характеристиками:
                Intel(R) Xeon(R) Platinum 8160CPU @2.10CPU (4 процессора по 4 ядра)
                NVIDIA GRID T4-4Q ComputeCapability: '7.5'
                ОЗУ 24Гб

                Хочу запустить вычисления на GPU. Посмотрел видео https://www.mathworks.com/videos/gpu-computing-in-matlab-86706.html , почитал статьи. Никак не получается. Программа зависает и все.

                Может быть там делов на минуту знающему человеку. Куда правильно вставить gpuArray? Вот мой код: 

                p=3
                x=ones(1,p^16-1);

                for k=1:(p^16-1)

                if x(k)~=0

                   h=k;
                   A=zeros(4,4);
                   for i=1:16
                        for j=1:(p-1)
                             if h >=(p-j)*p^(16-i)
                                A(i)=p-j;
                                h=h-(p-j)*p^(16-i);
                                break
                            end
                       end
                   end

                disp(A)

                for ip=1:(p^16-1)
                   h=ip;
                   P=zeros(4,4);
                       for i=1:16
                            for j=1:(p-1)
                                 if h >=(p-j)*p^(16-i)
                                    P(i)=p-j;
                                    h=h-(p-j)*p^(16-i);
                                    break
                                 end
                           end
                     end

                             if mod(det(P),p)~=0
                                for q11=1:(p-1)
                                     B=mod(P'*A*P*q11,p);
                                     num= B(4,4)+p*B(3,4)+p^2*B(2,4)+p^3*B(1,4)+...
                                              p^4*B(4,3)+p^5*B(3,3)+p^6*B(2,3)+p^7*B(1,3)+...
                                              p^8*B(4,2)+p^9*B(3,2)+p^10*B(2,2)+p^11*B(1,2)+...
                                              p^12*B(4,1)+p^13*B(3,1)+p^14*B(2,1)+p^15*B(1,1);
                                    if (num~=k)
                                        x(num)=0;
                                    end
                                end
                            end
                end
                end
                end