タグ

2016年8月26日のブックマーク (18件)

  • ビタミン欠乏で作る!「霜降り肉」の衝撃事実

    牛肉の仕事をするようになり、業界の重鎮のような方々と意見交換をするようになって、そうした人の口からよく出てくるのが「昔の牛肉はおいしかった」という、ため息交じりの言葉だった。私は青果業界でも仕事をしているので、同じように「昔のトマトは青臭くてうまかった」というような言葉をよく耳にしてきた。ただし野菜の場合、大概の場合はノスタルジーであって、客観的にみれば今のほうが味わいが深く濃くなっているというものが多いような気がする。 しかし、牛肉に関しては当に「昔のほうがおいしかった」のかもしれない。なぜなら現在出回っているA5の牛肉は、ほんの20年前にはとうてい存在しえなかった、まったくの別物なのである。 前回記事(黒毛和牛「A5は、農家を守るための策だった」)では、牛肉の等階級を決める格付けについて解説した。その格付けにおいて評価されるのは大きく分けて2つ、「肉の歩留まり」と「肉質」である。肉質

    ビタミン欠乏で作る!「霜降り肉」の衝撃事実
  • x86環境用にアライメント合わせるのが壊滅的に難しい件 | やねうら王 公式サイト

    やねうら王miniをx86(32bit環境)でコンパイルが通るように作業してたのですが、どうもアライメントを合わせるのが壊滅的に難しいです。 SSE命令を使うときに16byte単位にアライメントが合っていないと実行時にエラーになるものがあります。_mm_store_si128()等です。 まあそれはそれで仕方ないのでアライメントを合わせようとBitboardなどのstructにalignas(16)をつけたわけです。 ところが、ヒープから割り当てたときにはこれがアライメントされていない可能性があるようです。 thread.cpp template<typename T> T* new_thread() { std::thread* th = new T(); *th = std::thread(&T::idle_loop, (T*)th); return (T*)th; } > sourc

  • Intel AVX を使用して SIMD 演算を試してみる - kawa0810 のブログ

    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

    Intel AVX を使用して SIMD 演算を試してみる - kawa0810 のブログ
  • SIMD命令を使って高速に計算する - minus9d's diary

    マルチコアを用いた画像処理 from Fukushima Norishige このスライドに出てくるSIMD命令を試したくなったので試してみました。 IntelのCPUSIMD命令を使う場合、SSEという命令セットと、その後継であるAVXという命令セットのどちらかを使うことになると思います。私の手持ちのWindows機に載ってるCPUはCore i7-870とやや古く、SSEしか使えません。 kawa0810 のブログにあるサンプルはAVXを用いたものだったので、コードを改変してSSEでも動くようにしたコードが以下です。Windows 7 + Visual Studio 2013 Expressでビルドできることを確認しています。コードの正当性に自信が持てませんが、とりあえずSSEを使う場合と使わない場合とで結果は一致しています。 #include <stdio.h> #include

    SIMD命令を使って高速に計算する - minus9d's diary
  • アライメントの合ったメモリーブロックの割り当てと解放

  • aligned malloc() in GCC?

    Is there any standardized function in GCC or glibc to allocate memory block at aligned pointer? Like _align_malloc() in MSVC?

    aligned malloc() in GCC?
  • あまラボ 連載1 高速なメモリーコピー その4

    まずは確保したいバッファサイズ(size)より15バイト多く確保してそのアドレスをp1とします。 p1のアドレスがどうなるかは環境に依存するらしいので16バイトの境界にあっているとは限りません。なのでこのままでは高速なSSE命令が使えないので二行目の計算を行って16バイトの境界に合わせます。

  • print a __m128i variable

  • fast strlen and memchr by SSE2 (mitsunari@cybozu labs)

    strlen()とmemchr()のSIMD版を作ってみました. 今回は最速よりもお手軽さを重視したのでアセンブリ言語ではなくintrinsic関数を使っています.そのためVisual Studio 2008, gcc 4.xの両方でコンパイルでき32-bit, 64-bit OS上で動作します. WindowsLinuxでのみ確認していますが恐らくIntel Mac OS X上でも動作するでしょう(sample source). ベンチマークはランダムな長さの文字列の平均長(average length)を変化させつつ取りました.数値は1byteあたりにかかった処理時間比で小さいほど速いことを表します. strlenが3種類(ANSI, BLOG, SSE2)とmemchrが2種類(ANSI, SSE2)あります.BLOGというのは今回試してみようというきっかけになったCounting

  • デスクトップはElectronでええじゃろ。Pixi.jsで2D Graphicsやるぞい - Qiita

    ElectronがTypeScriptを正式にサポート (2017/06/01) しておったから更新じゃ。V.2.2以上でも良いぞ。 自作のWindowsアプリをMacでも動かしたくてのう。RAD StudioやらQtやらまあ試してみたんじゃ。C++出来るもんでな。じゃが・・・情報が少なすぎての、諦めるしかなかった。Qt Quickなんちゅうのはなかなか良い感じなんじゃが。iOSやらAndroidのアプリも作れるそうじゃ。ええ製品作っとるのにもったいないのう。 Electronというもんは以前から気になっとったんじゃが、グラフィックをそれなりに動かすと重そうじゃろ。まあイメージでな。じゃから触っとらんかった。しかし最近はすごいのう。いまさらながらPixi.jsというのを知ったもんで、examplesをいろいろ見ておったらこんなじじぃでもヤれそうな気がしてきてな。久しぶりにElectronす

    デスクトップはElectronでええじゃろ。Pixi.jsで2D Graphicsやるぞい - Qiita
  • [C++] 関数から複数の戻り値を返す - Qiita

    C++ってゅぅのゎ。。 関数から複数の値を返せないの。。。 そして言語仕様も複雑。。。 もぅマヂ無理。。。 Pythonしょ。。。 元ネタ:http://d.hatena.ne.jp/keyword/%A4%E2%A4%A5%A5%DE%A5%C2%CC%B5%CD%FD C++でも簡単に関数から複数の値を返すことができる! できるんです!(ただし、C++11以降) C++11から追加されたstd::tupleを使います。以下はサンプルコードです。 #include <iostream> #include <string> #include <tuple> std::tuple<int, char, std::string> GreatFunction() { return std::forward_as_tuple(9, 'q', "qiita"); } int main() { in

    [C++] 関数から複数の戻り値を返す - Qiita
  • pixiv private isucon 2016 Python 版実装を用意しました : DSAS開発者の部屋

    今年の ISUCON でも Python 実装が提供されることが 発表されました。 Python での練習は過去の予選問題でも可能ですが、今年の出題チームが準備した問題で 練習できるように Python 版の実装を用意しました。とりあえずベンチマーカーが完走する ところまでは確認してあります。 リポジトリ 用意したのはアプリの実装だけなので、これを使って練習する際は pixiv さんが公開されている AMI の webapp ディレクトリ配下に python という名前で git clone し、 systemd などの設定は練習の一環として自前で行ってください。 また時間があるときに自分でチューニングしてみて、ミドルウェアの選定や ツール・テクニックなどを公開したいと思います。 @methane

    pixiv private isucon 2016 Python 版実装を用意しました : DSAS開発者の部屋
  • BLE デバイス間の通信内容をパケットレベルで読み解いてみる : DSAS開発者の部屋

    前回の記事: 技適マークつき BLE パケットスニファを入手する BLE の通信プロトコルは複雑ですが、パケットの内容を適宜精査すれば 座学的な情報の向こう側にある実像を捉えることが可能となるでしょう。 パケットスニファを使って実際に BLE 機器間の応酬を追ってみました。備忘をかねて以下に情報を控えます。題材には低価格で出回っているありふれた Anti-Lost 系 BLE デバイス A を選びました。この小さなデバイスには LED・ブザーと押しボタンスイッチが実装されており、対向スマホアプリとの間で双方向のやりとりが可能なつくりになっています。 操作内容 デバイス A と Android 端末を使って以下の操作を行いスニファで BLE パケットのログを採取しました。 デバイス A の電源を入れる Android 端末上の対向アプリからデバイスを探索しデバイス A との接続を確立 アプリ

    BLE デバイス間の通信内容をパケットレベルで読み解いてみる : DSAS開発者の部屋
  • std::error_code, std::error_category, std::error_conditionの違い - C++と色々

    概要 C++11で <system_error> ヘッダが追加され、その中に3つのクラス std::error_code std::error_category std::error_condition が追加されました。自分はこの3つクラスの違いがわからなかったので調べてまとめてみました。ソースは https://www.amazon.co.jp/dp/4797375957www.amazon.co.jp です。 以下 std:: は省略しています error_code このクラスはエラーの種類を表すクラスです。 OSなどのシステムや低レイヤのAPIのエラーは整数値でエラーコードが定義されている場合があります。このクラスはエラーコードを表す整数値と、その整数値がどのエラーの分類なのかを表すオブジェクト ( これがerror_category )を受け取ります。 システム等に依存したエラー

    std::error_code, std::error_category, std::error_conditionの違い - C++と色々
  • 遅延初期化とvolatileにまつわるエトセトラ - A Memorandum

    JSON Processing Java API for JSON Processing (JSR 353) の RI 実装を見ていたらこんなコードがありました。 abstract class JsonNumberImpl implements JsonNumber { // ・・・略 // Optimized JsonNumber impl for int numbers. private static final class JsonIntNumber extends JsonNumberImpl { private final int num; private BigDecimal bigDecimal; // assigning it lazily on demand // ・・・略 @Override public BigDecimal bigDecimalValue() { /

    遅延初期化とvolatileにまつわるエトセトラ - A Memorandum
  • 根津駅のおすすめ居酒屋 人気店20選 | Retty(レッティ)

    夜はうどん居酒屋に変身。 『香味野菜ぶっかけ 600円』を注文しました。天ぷらも注文しようかと迷いながらも慌ててうどんだけの注文になってしまいました。 うどん麺は釜竹と同じものなのでしょうか?かなり細いうどん麺です。でも釜竹の方がもっと細かったような記憶があります。自分の投稿を見返してみれば釜竹のざるうどんの細麺を注文していたようです。 香味野菜が山盛りに乗っかっています。私は勝手に「香味野菜天」のイメージを作り上げていました。メニューをよく見れば「天」が付いていませんよね。野菜のみです、非常にヘルシー! 美しいビジュアルです。うどん麺は期待を裏切らない確かなコシ。かなり強いコシです。でも決して硬いうどん麺ではありません。心地の良いしっかりしたコシです。これはビックリするぐらい旨い麺です。 ぶっかけのお汁もしっかりとした出汁が効いた濃い味。これもかなりレベルの高いぶっかけのお汁ですね。香味

    根津駅のおすすめ居酒屋 人気店20選 | Retty(レッティ)
  • 動いた!SSD-to-GPU Direct DMA - KaiGaiの俺メモ

    ここしばらく、NVMe-SSDからGPUへとPeer-to-Peer DMAを行うためのLinux kernelドライバを書いている。 これは昨年末のPGconf.JPのLTでアイデアを先に発表したもので、従来は、例えばテーブルスキャンに際して90%の行がフィルタリングされる場合であっても、データをストレージからRAMにロードしていた。しかし、どうせフィルタリングするのであれば、バッファのために利用したRAMのうち90%は無駄である。 基的なアイデアは、ストレージからのデータロードに際して、CPU側のRAMではなく、GPU側のRAMへロードし、そこで数百~数千コアの計算能力を使って行のフィルタリングや、あるいは、テーブル同士のJOINや集約演算を行ってしまう。そして、これらの前処理が終わった段階でCPU側へデータを書き戻してやれば、CPUから見ると『ストレージからデータを読出したら、既に

    動いた!SSD-to-GPU Direct DMA - KaiGaiの俺メモ
  • お手軽に使える高速なSSE4.2専用文字検索ライブラリ - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 今回はC/C++用文字検索ライブラリmie_stringを紹介します。 mie_stringはテキストの中から複数文字のいずれかが存在する場所を高速に検索する関数を提供します。 文ではその使い方と性能を紹介します。また後半ではSIMD命令を使うときに悩ましい端数処理について詳解します。 準備 mie_stringではCのintrinsic関数(SSE4.2)を使ったものとアセンブリ言語で書いたものの二つを用意しました。 intrinsic関数を使う場合はMIE_STRING_INLINEを定義してからmie_string.hをincludeしてください。 これ以外のファイルは不要です。C/C++のどちらからも使えます。 includeするだけでつかえるので簡単ですね。 なお、コンパイルオプションにはgcc/clangなら-msse42や-mavx、Visua

    お手軽に使える高速なSSE4.2専用文字検索ライブラリ - Cybozu Inside Out | サイボウズエンジニアのブログ