タグ

ブックマーク / qiita.com/hama_du (2)

  • AWS S3+SQS+Lambda で格安でセキュアなジャッジシステムを作ろうとして一ヶ月溶かした - Qiita

    AWS Advent Calendar 2015 の14日目の記事です。 競技プログラミングで使われるジャッジシステムをAWS上に構築しました。が、あまり上手く行きませんでした。 TL;DR ジャッジシステムをAWSのサービスを組み合わせて構築できた コードのコンパイルはフロントエンドのEC2が担当し、実行可能ファイルはLambda上で走らせる。実行結果のやりとりはS3で行う。 良い点 安価。Lambdaは実際に動いた分だけ課金されるので、ユーザからのコードの提出がなければお金がかからない。 セキュア。Lambdaはサンドボックス環境が整備されているのでシステムを壊される心配がない。 悪い点 CPUの性能が実行の度にバラける。 固定のAMIを利用することになるため、スクリプト言語実行時の環境指定が不自由。 ジャッジシステムって? ジャッジシステムとは、プログラミングコンテストにおいて参加者

    AWS S3+SQS+Lambda で格安でセキュアなジャッジシステムを作ろうとして一ヶ月溶かした - Qiita
  • Goでお手軽に行列の積を爆速並列計算 - Qiita

    TL;DR Go言語で行列の積を並列計算する実装例を示した(たぶんよりよい書き方あるので誰か教えて) ローカルのマシンとAWSのc4.8xlargeで実験すると、それなりに爆速になった まえがき 競技プログラミングにおいて、行列累乗の計算が要求されることがよくあります。典型的な例は、複数の項の漸化式を行列の形に直すものでしょう。 行列の累乗の計算量は n を行列のサイズ、P を乗数とすると、繰り返し二乗法を用いることにより O(n^3logP) です。これは、行列同士の掛け算の部分が O(n^3) でボトルネックになっています。今回はこれを Goを用いて並列処理します。 Goの並列処理の仕組み 一言でまとめると、Goroutine(ゴルーチンと読む)という存在が複数のスレッド上で走っていて、そいつらは channelというものを介して相互に値をやり取りできます。 Goroutineを生成す

    Goでお手軽に行列の積を爆速並列計算 - Qiita
  • 1