type t (* void *)

ソフトウエアのこととか

プログラミング: shellの雑いはなし

.shからmakeコマンドを叩きたくなり、さらにその中で実行するMakefileの変数を上書きする 処理を書きたくなった。そのラップするスクリプトはどう書いたらよいだろうか。

a.c

#include <stdio.h>
int main()
{
#ifdef A
  printf("a");
#endif

#ifdef B
  printf("b");
#endif
}

Makefile

all:
    gcc $(CFLAG) a.c

さて問題、これをCFLAG=-DA -DBにするようにmakeするためのシェルスクリプトはどう書いたらよいだろうか。 ただし、この実行は複数回やるので変数に束縛することにする。

build.sh

var="CFLAG=\"-DA -DB\""

make "$var"

コレを実行すると以下のようになる。

$ bash build.sh
make: 無効なオプション -- 'D'
make: 無効なオプション -- '"'

さあ何が悪いのかな。

追記

今日1時間ほど詰まった問題を書いてみました。
正解はMakefileの$(CFLAG)が"$(CFLAG)"となっていないからです。

まぁshellはつらいですね……

プログラミング: 2017年度注目の技術

Coarray Fortran

Fortranの言語拡張。ノード間の非同期通信を隠蔽するための機能が多く含まれている。
Coarrayで書いたプログラムはMPIのライブラリが結合され、 Coarrayの配列として宣言された配列に代入すると通信が隠蔽されいつの間にか通信している。
非同期通信が基本。

とにかく楽にノード間(プロセス間?)通信するプログラミング言語はどういう設計があるのか気になる。

http://www.polyhedron.com/web_images//intel/productbriefs/8_CAF.pdf

数値計算のためのクラウド基盤

色々サービスがあるがどれが安価で使い勝手がいいのか確かめたい。
ついでに自分の数値計算屋の技量を高めたい。

0.5h/hour で物理96コアのマシン借りられるの良さそうじゃないですか。

Type 2A - The ARMv8 - Premium Bare Metal Servers and Container Hosting

ARMv8

ARMサーバーとして面白そうなサービスが沢山始まってほしいなぁということで ARMv8の命令セットに親しんでいきたい。

低レベル最適化

アドレッシングの最適化やPeepholeなど古典だけど あまり触ったことのない低レベル最適化に手を出していきたい。

Dockerとか仮想化技術

恥ずかしながら自分はこういうもの疎いのだけど、ビルドサーバでのビルドはなるべくクリーンな 状況でビルドしたいのでこういった技術に手を出さざるを得ない感じがする。
Gitlabとも仲良くしていきたい。

問題を解決するための開発・ビルド環境というのを研究していきたい。

一般の話: LTのテクニック?

インターネットの闇です。
最近LTを聞いていると、もっとこうしたら良いのになぁとか思うことが多いです。
それをそこはかとなく自分の考えを書き綴りたいと思います。

続きを読む