C/C++

bpftraceを使ってバイナリの謎の性能劣化を突き止めろ

サイボウズ社内ではC++で開発している製品があります。 未知のバッファオーバーランなどの脆弱性への対策として、重要なコンポーネントについてはプロダクション環境で利用しているバイナリでも AddressSanitizer を有効にしてビルドしています。 その製品で…

富岳版XbyakがIntelの深層学習ライブラリoneDNNにmergeされる

初めに サイボウズ・ラボの光成です。 このたび、Intelの公式深層学習ライブラリoneDNNに、富士通が開発しているスーパーコンピュータ富岳向けのPull Requestがmergeされました。 その開発に関わることになった経緯を紹介します。

指数関数expのAVX-512によるベクトル化

初めに サイボウズ・ラボの光成です。 C++で単精度配列に対する指数関数のベクトル化をAVX-512を使って実装しました。 標準関数std::exp(float)に対する相対誤差は2e-6、速度は10倍ぐらいです。 指数関数をどうやって計算するのか、一般的な話とAVX-512に特…

MKL-DNNで学ぶIntel CPUの最適化手法

初めに サイボウズ・ラボの光成です。 DNN(deep neural network : 深層学習)といえばGPUや専用プロセッサを使うのが主流です。 しかしIntelはCPUで高速にDNNをするためのライブラリ MKL-DNN を提供しています。 MKL-DNNはIntelの最新CPUに対応したオープン…

x86/x64最適化勉強会8 レポート

サイボウズ・ラボの光成です。 今回は2月17日に開催された「x86/x64最適化勉強会8」の模様についてお伝えします。 第7回からなんと約3年振りです。 今回の発表内容はAVX-512周りの話が2件、命令の正確なレイテンシの話、年明けから世間を騒がせているMeltdow…

x86/x64における小数から整数への丸め処理命令の変遷

こんにちは、サイボウズ・ラボの光成です。 今回は小数を整数に丸める処理に関して、x86/x64における命令がどのように変わってきたかを紹介します。

C/C++プログラマのための開発ツール

サイボウズ・ラボの光成です。 先日、社内で主にLinux上でC/C++を用いている開発者向けの講義をしました。 「こんなことができる」と知ってもらい、興味を持てば各自で勉強してもらおうと広く浅くツールを紹介しました。 gtags, ASan, Valgrind, addr2line, …

お手軽に使える高速なSSE4.2専用文字検索ライブラリ

サイボウズ・ラボの光成です。 今回はC/C++用文字検索ライブラリmie_stringを紹介します。 mie_stringはテキストの中から複数文字のいずれかが存在する場所を高速に検索する関数を提供します。 本文ではその使い方と性能を紹介します。また後半ではSIMD命令…

ブロックデバイスのクラッシュ模擬ツールcrashblk の紹介

こんにちは、サイボウズ・ラボの星野です。 先日の記事(半年かかったバグ調査の顛末は)では、長期間苦労した不具合調査についてあっさりとまとめて頂いたので、その行間に起きたたくさんのことを思い起こし、ひとり感慨にふけっています。 (私も記事原稿をレ…

『Effective Modern C++』勉強会まとめ

『Effective Modern C++』勉強会まとめ資料

x86/x64最適化勉強会7 レポート

サイボウズ・ラボの光成です。 今回は3月15日に開催された「x86/x64最適化勉強会7」の模様についてお伝えします。前回から約1年半振りと久しぶりの開催です。 今回の発表内容は浮動小数点数周りの話が2件、CSSパーサ周りの話が1件、暗号関係の話が3件でした。…

yrmcds 1.1.1 + libyrmcds 1.2.0 をリリースしました

最近はもっぱらオフィスの引っ越し作業で忙しくている山本泰宇です。 ブログを書くのも久しぶりなら、yrmcds についてお知らせするのも1年ぶりになってしまいました。 ご存じない or 忘れた方も多いと思いますので改めて紹介すると、yrmcds はサイボウズで…

HTTPパーサにおけるSSE4.2最適化の威力と注意点

こんにちは、サイボウズ・ラボの光成です。 PicoHTTPParserは@kazuhoさんたちが開発している高速なHTTPパーサです。 同じ作者によるHTTPサーバH2Oにも使われています。 11月4日の開発ブログによると、その時点でNode.jsなどに使われているhttp-parserの10倍…

MySQL 5.6 で loss-less semi-sync レプリケーション

こんにちは。運用本部 Hazama チームの深谷です。 今回は MySQL 5.6 で loss-less semi-sync レプリケーションを実現するパッチについて紹介します。

Microsoft Office 2007ファイルに対するパスワード攻撃の実装実験

こんにちはサイボウズ・ラボの光成です。 先日社内でハッカソンというイベントがありました(Cybozu Hackathon開催)。私はMicrosoft Office 2007ファイルに対するパスワード攻撃の実装実験を行ってみたのでその報告をします。 パスワード攻撃とは、暗号化され…

yrmcds 1.0.0 をリリースしました

@ymmt2005 こと山本泰宇です。去る 7 月に yrmcds という memcached 互換な KVS を公開したことをご案内しました。それから 5 ヶ月経ちましたが、今回は安定版となるバージョン 1.0.0 をリリースをご案内します。 ダウンロードはこちらからどうぞ: https://g…

x86/x64最適化勉強会6 レポート

こんにちはサイボウズ・ラボの光成です。 今回は8月31日に開催された「x86/x64最適化勉強会6」の模様についてお伝えします。 今回の勉強会では、6月に発売された Haswell の新しい機能にかかわるものが3件、C++ によるゲーム開発の環境にかかわるもの、ARMと…

yrmcds 0.9.0 リリース

@ymmt2005 こと山本泰宇です。 今回は memcached 互換で冗長構成を簡単に組める自社製 KVS である yrmcds のリリースをご案内します。 ... この Redis 全盛なご時世になんで?とか、repcached や Kyoto Tycoon があるじゃない、といったツッコミの嵐が聞えて…

サイボウズOfficeでZipファイル生成を実現するまで

こんにちは。サイボウズ Officeの開発を担当しています、佐野です。 みなさんよくご存知のZipファイル。ユーザーとして展開や圧縮の方法はよくわかっていても、プログラムとしてどうやって作られているのかを知る人はそう多くないと思います。今回は、この「…

x86/x64最適化勉強会5 レポート

こんにちはサイボウズ・ラボの光成です。 今回は3月30日に開催された「x86/x64最適化勉強会5」の模様についてお伝えします。 x86/x64最適化勉強会会場

最速の du を作ってみる

個人ブログはどれもこれも三日坊主な山本泰宇です。チームブログはいいですね、誰かが日々記事を書いてくれるので、暇を見つけて自分も書こうという気になれます。 さて、今回はネタ記事です。タイトルからしてネタですよね。du というのはあるディレクトリ…

数独の高速化

「サイボウズ・アドベントカレンダー」の4日目です(これまでの記事一覧)。どうやら三日坊主は免れたようです(笑)。 (0) はじめに こんにちは。サイボウズ・ラボの川合秀実です。私は主にサイボウズ製品の高速化のお手伝いをしています。しかし先日、製品…

暗号の世界最速実装を目指す ── 光成滋生

サイボウズに在籍する技術者を紹介するインタビューシリーズ。 光成滋生(Shigeo Mitsunari)2007年7月、サイボウズ・ラボ株式会社に入社。「キーの数が多い」という理由で日本語配列キーボードを愛用。「:」キーにバックスペースを割り当て、「変換」や「…