SAS 9.4. The Future is coming. Threads.

Всем добрый день!

Сегодня хотелось бы заглянуть в будущее и посмотреть что нас ждет через год или два.

А ждет нас конечно же еще один болезненный переход на новую версию SAS, а именно на 9.4 (ну конечно же если вы уже с 9.2 перешли на 9.3)

Честно говоря очень много изменений случилось в новой версии SAS, чтобы об всем рассказать и книги не хватит. Я бы даже сказал произошла некая небольшая революция. Можно было бы даже назвать версию сразу 10, но в SAS Institute видимо посчитали, что еще рано.

Ну так о новшествах: В SAS 9.4 появился новый язык DS2. Чем-то он может напоминать объектно-ориентированный, но не дотягивает до него. Однако обычные возможности Data Step сильно расширились. И видимо многим придется заново переучиваться или сильно доучиваться, чтобы начать писать свои программы на языке DS2. Я думаю что до этого пройдет еще не менее 2-3 лет. Как показывает практика от запада мы отстаем на 2 года, а там еще не начали во всю использовать этот язык.

И все же сегодня затронем тему параллельных вычислений. Как же все мы мечтали распараллелить наш data step последовательный код (по крайней мере я очень давно мечтал это сделать 🙂
И вот это свершилось теперь мы может распараллеливать наши вычисления.

Примеры:

Для начала создадим тестовую таблицу с 10 000 000 записей.

Затем создаем THREAD:

Теперь будет делать подсчет всех чисел от 1 до 10 000 000 в один поток:

Мы видим, что real_time практически идентичен cpu time и составляет почти 28 секунд.

Теперь выполним ту же задачу только в 8 потоков:

Из лога можно видеть, что реальное время работы программы уменьшилось до 7 секунд. А также работа cpu выросла до 50 секунд.

Теперь давайте решим эту задачу с помощью нашего обычного data step кода:

Мы видим, что результат практически идентичен работе нашей программы в один поток.

Ниже привожу результаты выполнения наших экспериментов:

Таблица T1 (формировалась в один поток):

Таблица Т8 (формировалась в 8 потоков):

И табличка которая получилась через data step код:

В общем и целом результат везде одинаков: 50 000 005 000 000 (сумма всех чисел от 1 до 10 миллионов).

P.S.
При написании статьи были использованы следующие материалы:

Надеюсь данная статья была полезна.
С уважением, 
Николай.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.