Perlテックブログ

Perlテックブログでは、Perlに関する新しい話題・ニュースを発信していきます。

Perlにおけるディープラーニングの基盤としてのSPVMの配列構造

現在僕は、SPVMというプロジェクトに取り組んでいるのですが、これはPerlディープラーニングをするための基盤ともなるライブラリです。

ディープラーニングをするためには、数値型の連続した領域の配列がまず必要です。

特に、ディープラーニングではGPUを使って、演算を行うことが多いので、32bitの浮動小数点型の連続した配列領域が必要です。

SPVMでは、32bit浮動小数点の配列は、以下のように生成できます。

my $nums = new float[128];

SPVMは、独立したプログラミング言語ですので、この配列を自由に操作できます。これは、Perlだけだと考えられないことです。pack/unpack操作によるコストや、Perlの動的型による操作は、必要とされるパフォーマンスを満たさないことでしょう。

for (my $i = 0; $i < @$nums; $i++) {
  $nums->[$i] = 1.5f;
}

また、SPVMは、ソースコードC言語に変換できるプリコンパイルという機能を持ちます。

この機能を利用すると、四則演算は、C言語の速度になります。

Perl入学式東京 2019年秋期 第一回 講義内容 ピックアップ実況

Perl入学式 2019年秋期 第一回が、今日、始まります。

講義の内容を、ここで、ピックアップして実況してみます。

諸注意(13:00)

株式会社アディッシュ様、会場提供してくださっています。

OSの説明

Windows
Mac
Linux

Perlに最適なOSは? Perl入学式では、Unix/Linux環境で環境構築。

Macの場合は、手持ちの環境。

Windowsの場合は、Windowsの上で動くPerl環境を構築。

なぜLinux環境にこだわるのか

サーバーOSであるLinuxの基本的な動作も、Perlと合わせて、覚えられます。

msys2の説明 (13:15)

msys2のスライドの1ページの解説が、長い。

「これを全部説明するのは、私でも難しいですね」(笑)

スライドツールの同期がされていなかったもよう。

msys2のダウンロード中。

msys2全員ダウンロードが完了。

msys2のインストール(13:25)

msys2のインストールが「signature invalid」という見慣れないエラーがでて、インストールできない事象が発生。

msys2の基本

・パッケージのインストール方法
・ファイルの開き方

Linuxコマンドの解説(14:10)

プログラミング用のテキストエディタのインストール((14:40)

プログラミング用のテキストエディタのインストール

第三部 Perlプログラミング入門(15:10)

講師・サポーター紹介・自己紹介

Perl入学式の歴史紹介(15:40)

Perl入学式の歴史紹介。Perl入学式の使い方。

Perlの歴史。Perlの特徴。

テキスト処理・強力な正規表現

Perl 5 と Perl 6の関係、Perl 6のRakuへの改名。

Perlコミュニティの紹介。

YAPC::Japan 次は、3月、京都。

Perlプログラミング入門(16:20)

Hellow, World.

print "Hello World!\n";

文法エラーがでたときは、びっくりしないで、行番号を確認してみましょう。

演習問題1。print文の練習。

演習問題2。引き算「3 - 1など」をして、結果を表示してみましょう。

Giblog 1.1 リリース - Gibhub Pagesのプロジェクトページをサポート

良いニュースです!

Giblog 1.1がリリースされました! Giblogは、gitでWebサイトとブログを管理できるCMSツールです。静的なHTMLファイルを生成します。 gitを使用してWebサイトを管理できます。

Giblog1.1のリリースでは、Github Pagesのプロジェクトページがサポートされました。パチパチパチ。

GithubプロジェクトページにWebサイトを配置

URLを見てください「https://yuki-kimoto.github.io/giblog-theme1-public/」これは本当にGithubプロジェクトのページです。

設定ファイルは次のとおりです。 「base_path」オプションを設定しています。


use strict;
use warnings;
use utf8;

{
site_title => 'mysite😄',
site_url => 'https://yuki-kimoto.github.io',
base_path => '/giblog-theme1-public',
}

このサイトリのリソースリポジトリ

giblog-theme1

です。

このサイトの公開リポジトリ

giblog-theme1-public

です。

Giblogでは、リソースリポジトリのファイルをビルドすることで、公開リポジトリのファイルを生成します。この公開リポジトリをpushするとGithub Pagesにも反映されます。Giblogは、静的なHTML生成ツールですが、ファイルの変更を検知する自動ビルド機能があるので、手動でビルドを行う必要はありません。

もっとGiblogについて知りたい場合は、 Giblogサイトをご覧ください。

Mojoliciousスタートアップを開始しました

Mojoliciousスタートアップを開始しましたので、Perlテックブログの読者の方へのお知らせです。

web.perlzemi.com

Mojoliciousスタートアップ - Perlによる新規Web開発

吉祥寺.pmで、C++とラジオチューナーの話が気になったのでメモ

吉祥寺.pmで、C++とラジオチューナーの話が気になったのでメモ

世界初のオープンソースのFMやモールス信号などなどいろいろと処理できるラジオチューナー

github.com

Perlコアチームが、正式リリースされたGithub Actionを早速使っていたのでコードリーディングしてみる

1か月前くらいだったかな、Perlコアのソースコードが、Githubに移動してきました。

僕は、毎日のようにPerlコアの更新を眺めているのですが、その中で、Github Actionというのが使われていたので、なんだこりゃと思って、調べてみました。

今月2019年11月、Github Actionが正式リリースされたことが、Githubから発表されたみたいですね。

Perlにしては(?)、意外と早い対応だったので、びっくり。

どうやら、Perlコアでは、Github Actionは、様々な環境で、継続的な自動試験を行うために、利用されているようです。

Github Actionの定義ファイルを読んでみる

Github Actionの定義ファイルは以下のディレクトリにあるみたいです。

https://github.com/Perl/perl5/tree/blead/.github/workflows

CPAN Testersでは、やりにくい環境で、自動試験が定義してあるのかなぁ。WindowsMac OSの環境が定義されています。

MinGW + Strawbery Perlの実行環境におけるGithub Actionの定義

name: smoke-windows-mingw64

on:
  push:
    branches:
      - '*'
    tags-ignore:
      - '*'
  pull_request:

env:
    PERL_SKIP_TTY_TEST: 1

jobs:
  perl:

    runs-on: windows-latest

    steps:
      - run: git config --global core.autocrlf false
      - uses: actions/checkout@master
        with:
            fetch-depth: 10
      - name: Set up Perl build environment
        run: |
          choco install strawberryperl
          echo "##[add-path]C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin"
      - name: Host perl -V
        run: perl -V
      - name: gcc --version
        run: gcc --version
      - name: Build
        shell: cmd
        run: |
            cd win32
            gmake -f GNUMakefile -j2
      - name: Run Tests
        shell: cmd
        run: |
            cd win32
            set HARNESS_OPTIONS=j2
            set CCHOME=C:\strawberry\c
            gmake -f GNUMakefile test

なんと、Windowsコマンドラインからアプリケーションをインストールするツールができています。

choco install strawberryperl

のところです。これはChocolateyというツールみたいです。知らない間にMicrosoftは、こういうツール作ってたんだね。

yamakisso.hatenablog.com

定義はyamlで行うみたい。

      - name: Build
        shell: cmd
        run: |
            cd win32
            gmake -f GNUMakefile -j2

runで実行できるみたいですね。MinGWのmakeであるgmakeコマンドを実行しています。

継続的な自動試験のオリジナルは、CPAN Testersですが、Github上で、継続的な自動試験ができるようになったので、こちらが便利ということで、Perlコアチームも利用し始めたのでしょうか。

Perlは、期限は古いですが、新しい技術に対して、少しづつ調整しながら取り入れるという感じがありますね。

こういうPerlの個性について、Perlゼミは、メッセージングしていきます。ほかでは得られない情報。