サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
kawa0810.hateblo.jp
概要 Docker で作成したイメージのエクスポートとインポートする方法です. エクスポートしたイメージを他の環境の Docker でインポートなどが可能になります 前回作成した Jenkins 環境のイメージをエクスポート & インポートします. エクスポート # docker save kawa0810/jenkins > backup.tar インポート # docker load < backup.tar Docker で遊んだ話 CentOS7 の docker を準備した話 - kawa0810 のブログ CentOS7 で docker を動かした話 - kawa0810 のブログ CentOS7 の docker で n 個の Jenkins 環境を用意した話 - kawa0810 のブログ CentOS7 の docker で Dockerfile をいじってみた話 -
概要 シェルスクリプトでは wait コマンドにプロセス ID を指定することで同期がとれる wait コマンドのサンプル sleep コマンドをバックグラウンドで実行させ,wait コマンドで同期をとる バックグランドで実行したコマンドのプロセス ID は $! で取得できる #!/bin/bash for ((i=0; i<3; i++)) do sleep 5 & array[i]=$! echo "Sleeping: ${i} : ${array[i]}" done wait ${array[@]} echo "Finish!!" シェルスクリプトで同期を取るサンプルコード シェルスクリプト内で別のシェルスクリプトをバックグラウンドで実行し,終了の同期をとる また,プロセス ID は重複しないはずなので配列の添字にも使える. run.sh #!/bin/bash ./myshell
概要 Docker のプライベートリポジトリを構築した話です. プライベートリポジトリを構築することで,ユーザは Docker イメージをプライベートリポジトリに登録することができます. プライベートレジストリの作成 # yum install docker-registry # systemctl enable docker-registry # systemctl start docker-registry firewalld の設定方法 プライベートレジストリはデフォルトでポート番号 5000 を使用するので解放する # firewall-cmd --zone=public --add-port=5000/tcp --permanent プライベートレジストリに Docker イメージを登録する 以前構築した Jenkins のイメージをプライベートリポジトリに登録する # dock
posix_memalign() が良い理由 本ブログでは今まで _mm_malloc() を使用してメモリアライメントを揃えていましたが,posix_memalign() を使用したほうが良いぽいです.理由は _mm_malloc() が Intel CPU 環境でのみ動作するのに対し,posix_memalign() は標準化されているためメインストリームな環境であれば概ね動作するためです.また,posix_memalign() で確保したメモリは free() で解放することができ,_mm_free() が混在しなくなるためコードの保守性の向上が考えられます. posix_memalign の使用方法 簡単な使用方法のみ掲載します. ・インクルードするファイル #include <stdlib.h> ・posix_memalign() の使用方法 int posix_memalign
概要 C言語における静的ライブラリと共有ライブラリの作成・使用方法を整理. 静的ライブラリ コンパイル時にリンクする ファイル名は libxxx.a (Windows なら xxx.lib) オブジェクトファイルを ar コマンドを使用して作成 共有ライブラリ プログラム実行時にリンクする ファイル名は libxxx.so (Windows なら xxx.dll) コンパイラごとに作成方法が変わる(?) ※ 今回は gcc を使用 nm で libxxx.so に関数が登録できたか確認可能 ライブラリにするコード(サンプル) ヘッダーファイル //hoge.h #ifndef _HH_HOGE_ #define _HH_HOGE_ void test(void); #endif ライブラリにする関数(サンプルなので適当) //hoge.c #include "hoge.h" #includ
主旨 OpenCL でベクタ演算 (SIMD) を試してみます.問題はOpenCL をさわってみる - kawa0810の日記 で取り扱った配列同士の加算演算のベクタ演算 (SIMD) 化を考えます.また,プログラムはオンラインコンパイルで作成します. OpenCL でベクタ演算 (SIMD) OpenCL ではベクタ型を使用することで SIMD ユニットを活用できる可能性があるそうです (OpenCL 入門より).OpenCL で使用できるベクタ型には以下のものがあります. char2 tmp; int4 x;//4個の int をもつ変数 double4 y;//4個の double をもつ変数 float8 z;//8個の float をもつ変数 //etc... ベクタ型を利用することで以下のように計算することが可能となります //1. 従来 float x[4], y[4], z
主旨 GCC 4.8.1 *1 をさくらインターネット社の VPS *2 上の CentOS にインストールした際の自分用まとめ記事です.今回は CentOS 6.4 に GCC 4.8.1 をインストールします.GCC も 4.8.1 となり,C++11 のコア機能が全て実装されたようです. 今回は VPS を借りてすぐの状態から gcc4.8.1 をインストールします.なお root のパスワード変更などは後回しを想定してます.必要に応じて各自で適宜設定してください. マシン構成等 今回のマシン構成などは以下の通り. OS: CentOS 6.4 x86_64 インストールする GCC:GCC 4.8.1 GCC のインストール先:/usr/local/bin 配下 //プラン:メモリ 1G の最安値(980円)コース GCC に必要となるもの 参考:Installing GCC -
メモリアライメントについて gcc4.8 においてメモリアライメント管理である alignas と alignof の使用が可能となりました.alignas と alignof は C++ 0x から言語的にサポートされており*1,alignas と alignof を使用してプログラムを記述することでコンパイラに依存しないプログラムの作成が可能となります. GCC と Clang のサポート状況が以下のサイトにまとめられています.(2013/04/30 では Clang のほうはまだアライメント関係を正式サポートしていないようです) Status of Experimental C++11 Support in GCC 4.8 - GNU Project - Free Software Foundation (FSF) Clang - C++14, C++11 and C++98 Sta
SIMD 演算と Intel AVX Single Instruction Multiple Data (SIMD) 演算とは1回の命令で複数のデータを同時に処理する演算です.近年の CPU には SIMD 演算を行うことができる SIMD 演算器が搭載されており,Intel 社の CPU ならば Streaming SIMD Extensions (SSE) を用いることで SIMD 演算を行うことが可能です.SSE は CPU に搭載されている 128bit レジスタを用いて演算を行うため単精度データならば4つ,倍精度データならば2つずつ演算を行うことができます.また,近年 SSE 後継の SIMD 拡張命令として Intel Advanced Vector eXtentions (AVX) が登場しました.AVX は第2世代 Intel Core i シリーズのプロセッサ (Sand
2012-03-03 - kawa0810の日記 の続きです. 今回は AVX 命令の組み込み関数の説明等です. データ型 AVX 命令で使用できる型は主に整数 (int),単精度 (float),倍精度 (double) です.また,AVX 命令は SSE 命令の拡張であるため 256bit 単位の演算だけでなく 128bit 単位の演算も可能です.各精度に対応する AVX の型は以下の通りです. __m128i//ビット整数値等で 128bit 演算を行う場合に使用 __m256i//ビット整数値等で 256bit 演算を行う場合に使用 __m128//単精度で 128bit 演算を行う場合に使用 __m256//単精度で 256bit 演算を行う場合に使用 __m128d//倍精度で 128bit 演算を行う場合に使用 __m256d//倍精度で 256bit 演算を行う場合に使用
キャッシュ制御は重要 (?) プロセッサに近いメモリの順番は, メインメモリ ⇔ L3 キャッシュ ⇔ L2 キャッシュ ⇔ L1 キャッシュ ⇔ レジスタ ⇔ 演算器 という感じだと思います. SSE や AVX にはキャッシュ操作をサポートする命令が存在します.SSE 命令・AVX 命令では並列化による高速化だけでなくキャッシュ制御による高速化が期待できます.特に,SSE が 128bit 単位の演算に対し AVX は 256bit 単位になるためメモリアクセスを効率的に行うことができるようになれば SSE よりも高い演算性能が得られる可能性があります. 計算結果をキャッシュを介さずに保存する SIMD で計算した結果を他の計算に再利用しない場合,キャッシュに残さずにメモリに格納する場合に用いる方法です. void _mm256_stream_ps(float* p, __m256 a
このページを最初にブックマークしてみませんか?
『kawa0810 のブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く