他の曲→mylist/53847645ツイッター→http://twitter.com/ningendo9
Hash-consing は、同値な値を表現するのに同一の構造を常に再利用することで、メモリの節約や、同値性の比較の高速化(ポインタの比較で済むようになるので)を行うための手法です。 また、共有を意識して処理を行えば、時間計算量も削減することができます。 一番簡単な例としては、Lisp系の言語やRubyでのシンボルがあり、識別子などを表すデータ型として文字列の代わりにこれらを使うことでhash-consingの利点を得ることができます。 また、JavaにもStringクラスにinternメソッドがあって、同様の目的に使われます。 より複雑な例としては、何らかの木や式などを表現する帰納的データ構造に対して、部分木や部分式を共有したいという場合があります。 二部決定グラフ(BDD: Binary Decision Diagram)などもhash-consingを用いたテクニックとみなすことがで
これはRust その2 Advent Calendarの16日目の記事です。日付と投稿日がかみ合っていなくてすみません。 概要 PEZY-SCというメニーコアプロセッサーでRustのコードを動かしてみたというお話です。 PEZY-SCとは PEZY-SCとは、PEZY Computingが開発したメニーコアプロセッサーです。1024コアのRISCプロセッサーで、各コア8スレッドのSMTになっており、トータルで8192スレッドが同時に動きます。ピーク性能は倍制度1.5TFlops、単精度3TFlopsで、これを用いたシステムが電力効率の良いスパコンとしてGreen500などで良い成績を収めています。現在さらに性能を向上させたPEZY-SC2を開発中です。 高い演算スループットと電力効率を目指しながらも、SIMDを用いない完全なMIMDプロセッサーで、ある意味コンピューター科学の常識に反してい
Rust Advent Calender 2016,19 日目の記事です. Rust で OS 作ったりなんだり,簡単にできるといいなあってことで. まず,Rust で nostd な環境でどのようにすれば良いのか,なのですが,単純にこれだけならば,Rust の公式ドキュメントに載っています. https://doc.rust-lang.org/book/no-stdlib.html 基本的には,nostd をコンパイラに指示して,lang_item を使っていくつかの不足のシンボルを定義してあげます. また,ここで panic_fmt をいい具合に定義するときっと panic!() とか使うのに役立つ(と思います). ここからが,ちょっとした TIPS になります. 実際に本当に使える何かを作ろうとしたとき,何もないと不便で,作りづらいです.そこで,Rust の libcore,つまり
この記事は Rustその2 Advent Calendar 2016 20日目の記事としてかかれました。 環境と対象読者 この記事に含まれるコードは rustc 1.13.0 (2c6933acc 2016-11-07)の Rust Playgroundまたはここで動くことを確認しました。 最適な対象読者としてはrustで並行処理するアプリケーションを これから書きたいと思っている人です。 std::threadの罠 rustの標準ライブラリのstd::threadを用いて並行処理を書きたい時に 例えばこういうような処理が例示されるかと思います。 use std::thread; fn add_one(x: i32) -> i32 { x + 1 } fn main() { let y = 1i32; let handle = thread::spawn(move ||{println!(
この記事は 言語実装 Advent Calendar 2016 - Qiita 20日目の記事です。 introと書いてあるのは、この内容で通年講義を受講しており、その最終発表が1ヶ月後くらいにあるため、 実装に関する部分などは別途記事化する予定でいるからです。 言語実装アドベントカレンダーに載せるのはこのintroのみなので、 それ以降はアドベントカレンダー関係なく、別途タイミングを見計らって投稿します。 今年度、大学の単位認定と自主学習を含めてRegion推論を導入したMLのサブセットを実装しています。 きっかけとしては、昨年度言語実装アドベントカレンダーに投稿されていたRegionの記事*1をはてブから発掘し、 学習量として良さそうなテーマだなぁと思ったのが始まりです。 事始めとして、Regionを元にしたアイデアを扱う論文である以下を読み進めました。 以下、参考論文とはこの論文のこ
For Japanese readers: さすがにこれ全部和訳するのは大変すぎるのでこのままでゆるしてください。最近Google翻訳が大幅に改善しましたし。 This is the 20th article of Competitive Programming Advent Calendar 2016. I interviewed some coders from several countries. I asked about from how they practice problem solving to their daily life. Hope you enjoy it. Introduction Interview Participants General Questions Self introduction (user name, school, country, co
この記事は、はてなエンジニアアドベントカレンダー2016の12月19日の記事です。 developer.hatenastaff.com 昨日はid:taketo957くんの 10ms以下のレスポンスタイムを支える継続的負荷テスト - taketo957の日記 でした! Webオペレーションエンジニアのid:masayoshiです。 2016年に入社後、基盤チームとして仮想化、ネットワーク周りを中心に見ています。 さて、この記事ではLinuxのARPの挙動とその挙動から起こった問題を紹介しようと思います。 長々と記事を読みたくない人向けに結論をまとめるとLinuxのARPはTCP通信で使われ続ける限りキャッシュが飛ばないという挙動になるので、複数のL2スイッチにまたがったセグメントや非対称ルーティングをしている場合は気をつけましょうという話が書かれています。 今回紹介する事例自体は別に新規性
Posted on December 19th, 2016. A while back I decided to try to write a Game Boy emulator in Common Lisp based on this series of articles. I made some good progress but eventually got bogged down because I was trying to learn a bunch of complex new things at once: How to write an emulator How to use Qt with Common Lisp How the Game Boy works internally Instead of dragging on, I decided to take a b
If you have a background in Python, Java or C++, you're probably used to raising exceptions if something goes wrong. Rust doesn't have exceptions. The official Rust book has a comprehensive chapter on error handling, but the TL;DR is we should probably use the Result type. We can match on its variants to handle both the happy path and error cases in a very explicit, if not verbose, way. To address
$A$ 以下の非負整数のうち「3の倍数または3の付く」かつ「8の倍数でない」数がいくつあるか求めてみよう。でもいきなりこの問題を解くのは難しいと思うので、 $A$ 以下の非負整数の総数を求める $A$ 以下の非負整数のうち、3の付く数の総数を求める $A$ 以下の非負整数のうち、「3が付くまたは3の倍数」の数の総数を求める $A$ 以下の非負整数のうち、「3が付くまたは3の倍数」かつ「8の倍数でない」数の総数を求める という4つの問題を順に解くことにしよう。 A以下の非負整数の総数を求める 左から順に数字を決めていこう。 左から 4175 と決めたあとの状況を考えてみる。 ? に入りうる数字は何だろう。これは 0 から 9 のどれでもいい。上から 2 桁目が $A$ より小さいので ? に何を選んでも $A$ 以上にはならないからだ。次の場合はどうだろう。 この場合 ? に入りうるのは 0
Mark and I were discussing some of the newbie traps in the Haskell ecosystem, particularly in libraries. They're a recurring topic for us and we finally decided to round some of the more common ones up into a list. Hopefully this prevents some pain in the future. Partial functions This is a classic case of snatching defeat from the jaws of victory. The language has handed you all the tools you nee
Back when crypto/tls was slow and net/http young, the general wisdom was to always put Go servers behind a reverse proxy like NGINX. That’s not necessary anymore! At Cloudflare we recently experimented with exposing pure Go services to the hostile wide area network. With the Go 1.8 release, net/http and crypto/tls proved to be stable, performant and flexible. However, the defaults are tuned for lo
When we offered CS231n (Deep Learning class) at Stanford, we intentionally designed the programming assignments to include explicit calculations involved in backpropagation on the lowest level. The students had to implement the forward and the backward pass of each layer in raw numpy. Inevitably, some students complained on the class message boards: “Why do we have to write the backward pass when
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く