並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 60件

新着順 人気順

並列プログラミングの検索結果1 - 40 件 / 60件

  • CPUとGPUのマルチスレッディングの違いについて - arutema47's blog

    "Locality is efficiency, Efficiency is power, Power is performance, Performance is King", Bill Dally マルチスレッディングとは? CPUとGPUのマルチスレッディングの違いをブログにまとめていたけど例によって誰も興味なさそう— arutema47 (@arutema47) 2021年8月16日 つぶやいたら読みたい方が多そうだったので完成させました。 マルチスレッディングとはメモリ遅延を隠蔽しスループットを上げるハードウェアのテクニックです。 ただCPUとGPUで使われ方がかなり異なるため、その違いについて考えてみる記事です。 (SIMDについて並列プログラミングの観点から触れるべきでしたが、時間無いマルチスレッディングに注目するため初版では省きました。) 本記事について 本記事はCPUとG

      CPUとGPUのマルチスレッディングの違いについて - arutema47's blog
    • マルチスレッド・プログラミングの道具箱

      まえがき クラウド上の仮想サーバから手元のスマートフォンまで、いまや複数のCPUコアを搭載するマルチコアはどこにでもある環境になりました。ハードウェア側が並列(Parallel)・並行(Concurrent)処理に向けて急速に進化する一方で、ソフトウェア側つまりプログラミング言語の進化はさほど追い付いていません。並行処理記述の手軽さを求めた Go言語 や、マルチスレッド処理の安全性を重視する Rust言語 などが登場してはいるものの、「普通にプログラムを記述するだけで複数CPUコア環境で高速に走るプログラミング言語」は遠い夢物語のままです。 モダンなプログラミング言語や並列・並行処理ライブラリは、複雑で難解なマルチスレッド処理を直接記述しなくてすむよう、安全性・利便性の高い抽象化レイヤを提供します(例:Go言語のgoroutineとchannel、Rust言語の Rayonライブラリ)。し

        マルチスレッド・プログラミングの道具箱
      • Goでの並行処理を徹底解剖!

        並行処理をうまく使うのは難易度が高めです。 それゆえに、go文とチャネルについて基本的な文法書で知った後「並行処理ちゃんとできる!」の段階まで自力でたどり着くのは大変でしょう。 この本は、 *「並行処理ってやって何が嬉しいの?」 *「ゴールーチンとかチャネルとかって一体何者?」 *「ゴールーチンやチャネルを使ったうまいコードの書き方が知りたい!」 *「Goランタイムで並行処理をどううまく処理しているか知りたい!」 といった要望にお答えする、「Goでの並行処理」に関連した事柄について網羅的・徹底的に書きまくったものです。

          Goでの並行処理を徹底解剖!
        • 会社員辞めて入学した大学院修士課程がそろそろ終わろうとしているのでまとめておく - seri::diary

          これは何か 筆者について なぜ大学院に入ったのか 日本の大学院という場所について 大学院での研究内容について 自分の発表実績 大学院生活について おわりに これは何か 2018年3月に仕事を辞めて,2018年4月に筑波大学大学院システム情報工学研究科コンピュータサイエンス専攻博士前期課程(修士課程)に入学した.それから早くも2年弱が経ち,もうすぐ修了なので大学院生活を忘れないうちにまとめておくだけのエントリである. 修了自体は2020年3月だが,あとは修論を仕上げて提出すれば終了なので研究自体はもう実質終わっている状態である*1. 筆者について 2009年3月に岩手大学農学部を卒業.新卒で上流系SIerに就職して2年半ぐらい勤務した後に,コード書きたくてwebアプリエンジニアに転向.その後,6年半ぐらいweb受託,webサービス運営企業などでソフトウェアエンジニアとして勤務.2018年3月

            会社員辞めて入学した大学院修士課程がそろそろ終わろうとしているのでまとめておく - seri::diary
          • Python で大量のファイルを並列で速く読み込む - Qiita

            from glob import glob files = glob('data/*.csv') len(files) # 10000 この 1万件の CSV ファイルを Pandas DataFrame として読み込みたい。 ちなみに検証用のデータは以下のようにして生成した。 (3列 x 10,000行 の CSV ファイル 10,000 個) import numpy as np import pandas as pd row_n = 10000 col_n = 3 columns = [f'col{i}' for i in range(col_n)] for i in range(10000): df = pd.DataFrame(np.random.randn(row_n, col_n), columns=columns) df.to_csv(f'data/{i:04}.csv',

              Python で大量のファイルを並列で速く読み込む - Qiita
            • 令和にふりかえる C10K 問題

              C10K 問題 (the C10K problem) は1999年に Dan Kegel が発表した文章、ならびにそこで提示された「問題」です。文章はその後も2000年代前半に何度か更新されているのですが、さすがに令和に読み返すと、当初の問題意識がわかりにくいところがあります。 2000年からの10年は、 ソフトウェア面では、select(2), poll(2) にかわる新しいシステムコールの実装と、それを使ったアプリケーションの普及 ハードウェア面では、x86 アーキテクチャの64ビット移行、仮想化命令の追加と、マルチコア化 さらにそこにクラウドも登場する、面白い時代でした。ここでは、それらの出来事を中心に、さらに、当時の雰囲気をつたえるような日本国内のブログやインタビュー記事をまとめることで、C10K 問題が、さまざまな側面から解決されていく流れを説明したいと思います。 書き足したいと

              • Ruby 3.0 の Ractor を自慢したい - クックパッド開発者ブログ

                Ruby の開発をしている技術部の笹田です。娘が自転車に乗り始め、まだ不安なためずっとついていなければならず、少し追っかけまわしただけで息切れがヤバい感じになっています。運動しないと。 ここ数年、Ruby で並列処理を気軽に書くための仕組みである Ractor を Ruby 3.0 で導入するという仕事を、クックパッドでの主務として行ってきました(クックパッドから、これ、と言われていたわけではなく、Ruby を前進させるというミッションの上で行ってきました)。 Ractor は、もともと Guild という名前で開発をはじめ、2020年の春頃、Ractor という名前に変更することにしました。いくつかの機会で発表しています。下記は、RubyKaigi での発表の記録です。 A proposal of new concurrency model for Ruby 3 - RubyKaigi

                  Ruby 3.0 の Ractor を自慢したい - クックパッド開発者ブログ
                • プロと読み解く Ruby 3.1 NEWS - クックパッド開発者ブログ

                  技術部の笹田(ko1)と遠藤(mame)です。クックパッドで Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、ついに Ruby 3.1.0 がリリースされました(Ruby 3.1.0 リリース )。今年も Ruby 3.1 の NEWS.md ファイルの解説をします。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ プロと読み解くRuby 3.0 NEWS - クックパッド開発者ブログ 本記事は新機能を解説することもさることながら、変更が入った背景や苦労な

                    プロと読み解く Ruby 3.1 NEWS - クックパッド開発者ブログ
                  • 「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読んだ

                    最近「おれってガベージコレクションを勉強するにあたってめちゃくちゃ恵まれた環境にあるのでは?」とふと思い立ち、ベージコレクションの勉強を始めました。 ガベージコレクションの勉強を始めるにあたって、とりあえず「The Garbage Collection Handbook (first edition)」の邦訳である「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読むことにしました。 この記事では、読み終わってうれしいので、雑に感想を書きなぐっています。表記が「GC」だったり「ガベージコレクション」だったりするのは雑に書いたからです。 前提知識 ガベージコレクションの事前知識はほとんど不要で、何をしてくれるものか大まかにわかっていれば良い程度だと思います。つまり、ヒープに確保した領域を明示的に解放しなくても、何かのアルゴリズムでいい感じにやってくれる仕組み、ということを知って

                      「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読んだ
                    • 過去のブーム(並列プログラム)の現状を考える

                      みんな割と未来の予言はよくするが、あんまりその結果を振り返らんよなぁ。 現在のディープラーニングのブームをどう捉えるか、というか、 プログラマのキャリアという点でどう接していくか、を考えるにあたり、 過去のブームを考えてみるのは良いんじゃないか、という気がした。 最近並列GCや並行GCの章を読んでいて、 一昔前の大きなブームとしてはParallel computingがあったなぁ、と思い出した。 ということでこの事について、専門にしてなかった部外者プログラマの目にどう映ったかを記しておきたい。 なお、「XXXだと言われていた」はあんまりソースとかを確認したりはしてません。 なんとなく自分はそう聞いていた気がしたしそう思ってた、程度のものです。 かつて思っていたことと当時の状況 Parallel computingはだいたい10年くらい前の時点ではその後の大きなトレンドとして明らかに存在して

                      • 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 - Qiita

                        大学の授業で講義資料を作ったので,Qiitaにも展開しておきます. 背景: クロック周波数の停滞とコア数の増加 コンピュータはクロック周波数に同期して計算をします.おおむね1秒間にクロック周波数の数で示されるだけの数の機械語命令を実行できると考えると良いです.たとえばクロック周波数が1GHzであれば,1GHz=1,000MHz=1,000,000(百万)kHz=1,000,000,000(10億)Hzですので,1秒間に1,000,000,000(10億)個の機械語命令を実行できるというような感じです.もちろんこれは概算です. いわゆるヘネパタ本(J. L. Hennessy & D. A. Patterson: Computer Architecture: A Quantitative Approach, 6th edition. Morgan Kaufmann, 2017; 邦訳 中條・

                          並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 - Qiita
                        • Ruby 3.1はここに注目! 新しいJITとは? デバッガ、エラーメッセージ、そして未来! リリースマネージャーに聞いた |ハイクラス転職・求人情報サイト AMBI(アンビ)

                          Ruby 3.1はここに注目! 新しいJITとは? デバッガ、エラーメッセージ、そして未来! リリースマネージャーに聞いた 2021年12月25日にリリースされたばかりのRuby 3.1では、どのような機能がどういった経緯で採用されているのでしょう。リリースマネージャーのnaruseさんと、フルタイムコミッターのmameさん、ko1さんに詳しくうかがいました。 プログラミング言語Rubyでは2013年の2.1.0以降、毎年クリスマス(12月25日)にメジャーバージョンアップが行われています。2021年も無事にバージョン3.1.0がリリースされました。 ▶ Ruby 3.1.0 リリース Ruby 3.1は、言語機能の面では全体的に穏やかなリリースにも見えますが、新しい方式のJIT(just in time)コンパイラ、標準の新デバッガー、事前アナウンスでも好評だったエラーメッセージの改善な

                            Ruby 3.1はここに注目! 新しいJITとは? デバッガ、エラーメッセージ、そして未来! リリースマネージャーに聞いた |ハイクラス転職・求人情報サイト AMBI(アンビ)
                          • 非同期と並列 / morrita - Message Passing

                            karino2 が 並列プログラムから見たFuture というビデオを作って公開していたので、引っ越しの荷造りをしながら眺めた。 長いのでここにざっくりとした主張をまとめると: Future/Promise (およびその後釜の async/await) は非同期プログラミングで callback hell にならない発明という見方をされているが、 そもそもなぜ callback hell が必要だったかの時代背景が十分に理解されていない。 背景の一つはブラウザ JavaScript のプログラミングモデルにシングルスレッド・ノンブロッキング(イベントループ)という制限があったから。 これは(特にフロントエンド開発者の間では)よく理解されている。 もう一つの視点は SEDA みたいなマルチスレッド・ノンブロッキング環境の必要性で、 こっちはいまいち広く理解されていないように思える。 結果とし

                              非同期と並列 / morrita - Message Passing
                            • Goにおいてアクターモデルを実現するライブラリ"Molizen"とその未来

                              こんにちは。@sanposhihoです。 この記事では、アクターモデルとはなんぞやという話から始まり、僕が卒業論文のプロジェクトとして作成したGoのライブラリ、“Molizen”の紹介をします。 わりと長く、乱文ですが、適宜読み飛ばして興味のある部分だけをご覧いただければと思います。 マサカリは優しく投げてください。ここはこうした方がいいんじゃないかみたいなのも参考にしたいので是非。 Twitter(@sanpo_shiho)に投げていただいても、雑にGitHubのissueを立てていただいてもいいです。 sanposhiho/molizen: Molizen is a typed actor framework for Go. Goのアクターモデルのフレームワークを公開しました。未完成なので暖かく成長を見守ってください🌱 sanposhiho/molizen: Molizen is a

                                Goにおいてアクターモデルを実現するライブラリ"Molizen"とその未来
                              • キャリアのスタートはコールセンター?!プログラミングに出会ってからRubyKaigiに登壇するまでの波乱万丈な人生【Rubyistめぐりvol.3 しおいさん 前編】 - STORES Product Blog

                                Rubyist Hotlinksにインスパイアされて始まったイベント『Rubyistめぐり』。第3回はしおいさん(塩井美咲さん)をゲストに迎えて、お話を聞きました。こちらは前編です。 hey.connpass.com 後編は下記からご覧ください。 私の好きなRubyで世の中に価値を届ける、わからないものをわかるための距離のつめ方【Rubyistめぐりvol.3 しおいさん 後編】 - STORES Product Blog しおいさんの幼少期、波乱万丈な人生の幕開け 藤村:Rubyistめぐりにお越しいただきありがとうございます。今回はみなさんもご存知、しおいさんに来ていただきました。僕個人としても、一体なぜしおいさんがしおいさんになってしまったのか、大変興味があるので今日はお話するのを楽しみにしておりました。 しおい:ありがとうございます。よろしくお願いします。 藤村:よろしくお願いいた

                                  キャリアのスタートはコールセンター?!プログラミングに出会ってからRubyKaigiに登壇するまでの波乱万丈な人生【Rubyistめぐりvol.3 しおいさん 前編】 - STORES Product Blog
                                • 書評: 並行プログラミング入門

                                  まえがき オライリーから発売される「並行プログラミング入門」が若干早く入手できました。せっかくなので、紹介とか感想を書いてみようかと思います。結論だけ先に書いておくと、並行/並列プログラミングに興味があるなら買いましょう必ず役に立ちます。 どんな本? この本は、大学のOSの授業とかで習うような並行/並列プログラミングの基礎を網羅的に扱っている素晴らしい本です。それだけに留まらず近年利用されているような幅広い技術に関する発展的な内容まで広く扱っています。 どんな人におすすめ? 並行/並列プログラミングの基礎が学びたい人 ロックなどの基礎技術の実装例について学びたい人 Rustを使った並行/並列プログラミングについて学びたい人 並行/並列プログラミングの計算モデル(意味論など)について学びたい人 ロックフリー、STM、async/awaitといった最新の技術について学びたい人 書籍の紹介 この

                                    書評: 並行プログラミング入門
                                  • Pythonのように書けてGPU上で並列処理できる新プログラミング言語「Bend」、2D画像→3Dを高精度生成するGoogle「CAT3D」など重要論文5本を解説(生成AIウィークリー) | テクノエッジ TechnoEdge

                                    2014年から先端テクノロジーの研究を論文単位で記事にして紹介しているWebメディアのSeamless(シームレス)を運営し、執筆しています。 1週間分の生成AI関連論文の中から重要なものをピックアップし、解説をする連載です。第47回目は、生成AI最新論文の概要5つを紹介します。 生成AI論文ピックアップ GPU上でネイティブ動作する並列処理が可能な新プログラミング言語「Bend」とランタイムシステム「HVM2」 2D画像から3Dコンテンツを生成する「CAT3D」をGoogleが開発 大規模言語モデルは追加学習や新知識で幻覚生成が増加。Googleなどが調査 画像とテキストを使った長文生成が得意なAIモデル「Chameleon」をMetaが開発 Transformerを超える「Mamba」は視覚認識タスクに必要か? 開発した「MambaOut」モデルで検証 GPU上でネイティブ動作する並列

                                      Pythonのように書けてGPU上で並列処理できる新プログラミング言語「Bend」、2D画像→3Dを高精度生成するGoogle「CAT3D」など重要論文5本を解説(生成AIウィークリー) | テクノエッジ TechnoEdge
                                    • 「AIまだまだ使えない」エンジニアが語るAIブームへの違和感と答え ニュースイッチ by 日刊工業新聞社

                                      人工知能(AI)の実用性は、現状どれほどのものなのか? 開発に携わる専門家と一般の人とでは、認識が大きく違うようだ。 今回、ウェブサイトやモバイルアプリのデータ分析サービス「KARTE(カルテ)」を提供するプレイド(東京都中央区)の牧野祐己さんと春日瑛さんに、AIの技術的課題やビジネスで展開していく上での運営的な課題、さらにはカルテではどのように課題解決を試みているのかを聞いた。 牧野さんは、「今後5年や10年で広く言われているようにAIが進化して、人や社会に関する色々な問題が解けるようになるかというと、おそらくそうはならない」と話す。AIは、写真に写っているものが何かを判別することや、テキストを読み取って大まかに要約するといった比較的単純な課題に対しては有効だが、現実世界の複雑な問題の解決に利用するにはまだまだ時間を要するという。 記事の内容に関しての前提が三つある。まず、「AI」という

                                        「AIまだまだ使えない」エンジニアが語るAIブームへの違和感と答え ニュースイッチ by 日刊工業新聞社
                                      • エドガー・ダイクストラ

                                        Inferenceより。 クシシュトフ・アプト 結局、ナイメーヘンからアイントホーフェンに向かう列車は遅れて到着しました。さらに悪いことに、私は大学の建物の中にあるオフィスを見つけることができませんでした。結局、着いた時には、約束の時間に予定より30分以上遅れていました。教授は、私の謝罪を完全に無視し、会議に1時間も掛かってしまいました。私がエドガー・ウィベ・ダイクストラに会ったのはこの時が初めてでした。 1975年に会った時、ダイクストラは45歳でした。コンピュータ・サイエンスで最も権威のあるACMチューリング賞を授与されたのは、3年前のことでした。彼のほぼ20年後輩の私は、この分野についてほとんど知らず、数週間前にフローチャートが何であるかを知ったばかりでした。私は、共産主義のポーランドから来たばかりのポスドクで、数理論理学のバックグラウンドを持ち、西側にとどまる計画を持っていました。

                                        • 一度マネージャーを辞めたエンジニアが、メルカリで求める「楽しさ」の正体 #BoldChallenge | mercan (メルカン)

                                          メルカリにある3つのバリュー、Go Bold(大胆にやろう)、All for One(全ては成功のために)、Be a Pro(プロフェッショナルであれ)。なかでも、特にメルカリらしいと感じられるのが「Go Bold」です。このメルカン特集企画「Bold Challenge」では、変化するメルカリの現場で挑み続けるメンバーにフォーカス。その現在地から、挑戦の原動力を紐解いていきます。 前回、前々回と続いてプロダクトマネージャーを取り上げてきましたが、第3回は、Architectチームのエンジニアリングマネージャー(以下、EM)高山征大が登場します。EMだけでなく、いちソフトウェアエンジニアや組織サポート、テックリードなど、多様な役割を担ってきた高山。役割を変化させながら、メルカリの開発現場に立ち続ける理由を聞きました。 今回の聞き手は、高山の採用担当だったOrganization & Tal

                                            一度マネージャーを辞めたエンジニアが、メルカリで求める「楽しさ」の正体 #BoldChallenge | mercan (メルカン)
                                          • 【強化学習】ついに人間を超えた!?Agent57を解説/実装してみた(Keras-RL) - Qiita

                                            強化学習の評価でよく使われるAtariのゲームですが、ついに57全てのゲームで人間を超えた手法が現れたようです。 早速実装してみました。 ※ネット上の情報をかき集めて自分なりに実装しているので正確ではない点はご了承ください ※解釈違いの内容がある可能性もご注意ください(理解が追いついていない部分があります) コード全体 本記事で作成したコードは以下です。 github GoogleColaboratory(実行結果付き) ※GoogleColaboratoryはmultiprocessingの相性が悪いらしく1Actorのみの学習となります) ※MountainCarの学習をのせています 追記:自作フレームワークを作成しています。そちらの実装の方が正確なコードとなります。 目次 構成としては前半が技術解説で後半が実装の説明になります。 Agent57とは NGU(Never Give Up

                                              【強化学習】ついに人間を超えた!?Agent57を解説/実装してみた(Keras-RL) - Qiita
                                            • 「GCC 10.1」リリース、静的コード解析機能が実験的に導入される | OSDN Magazine

                                              The GNU Compiler Collection(GCC)開発チームは5月7日、最新のメジャーリリースとなる「GCC 10.1」公開を発表した。静的コード解析が実験的に導入され、C++20のサポートも強化した。 The GNU Compiler Collection(GCC)はGNUオペレーティングシステム向けのコンパイラとして開発がスタートしたプロジェクトで、 C/C++やObjective-C、Fortran、Ada、Go、Dなどさまざまな言語に対応するフロントエンドとライブラリを提供する。 GCC 10.1は、2019年5月に公開されたGCC 9.1に続くメジャーリリース。この間、プロジェクトはバージョン管理をSubversionからGitに変更している。 C++20のサポートが、コンパイラとlibstdc++ライブラリの両面で強化されている。constexpr関数における評価

                                                「GCC 10.1」リリース、静的コード解析機能が実験的に導入される | OSDN Magazine
                                              • はじめてのにき(2020-07-13)

                                                _ CS 30トピック https://twitter.com/_ko1/status/1281972384036040704 と https://twitter.com/_ko1/status/1281984532971786240 を見て、エンジニアトピックの作ってみる課題30個、ての考えてみると面白そうだなあ、と思って考えてみた。たぶん普通 CS という時よりも、自分の趣味と実務ぽいの多めだと思う 表記は ジャンル / 課題 / コメント みたいになってる アルゴリズムぽいやつ データ構造 / 赤黒木など平衡木 / ハッシュでもいいなあという気がする アルゴリズム / diff / 個人的には動的計画法の実用の圧倒的定番 アルゴリズム / TSPをGPなり焼きなましなりで / メタヒューリスティクスなんか知ってていいと思うので アルゴリズム / オセロのゲーム木探索 / 再帰する系も

                                                • 眠らないTime-Based SQL Injection

                                                  はじめに SQLインジェクションがあるにもかかわらず、レスポンスボディの内容やステータスコードに変化がない、いわゆる「完全なブラインド」の状態でも、sleep系の関数等を使うことによってデータが盗まれる可能性があります。この攻撃はTime-Based SQL Injectionと呼ばれており、sleep系の関数を使うことから「実際に攻撃者にとって有用な情報を盗み出すには時間がかかる」というのが定説のようです。 しかし実はTime-Based SQL Injectionを高速に実行し、いわゆる「普通の」ブラインドな状態(DBのエラーメッセージは読めないが、ステータスコードの変化等でSQLがエラーになったかどうかを判別できる状態)と同じ速さでデータを取得することが可能です。本エントリではこの手法(眠らないTime-Based SQL Injection)についての説明を行います。 筆者は偶然こ

                                                    眠らないTime-Based SQL Injection
                                                  • RubyKaigi 2023に社員4名で参加 & LTで1名登壇しました - BOOK☆WALKER inside

                                                    こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードとして働いています。 本記事では、2023年5月11日から13日にかけて、長野県松本市で開催されたRubyKaigi 2023へ参加したことについてお話します。 RubyKaigiとは 社員4名で参加 1名がLT登壇 見に行った講演からいくつか The future vision of Ruby Parser "Ractor" reconsidered Optimizing YJIT’s Performance, from Inception to Production Ruby JIT Hacking Guide 松本はいい街だった まとめ RubyKaigiとは Ru

                                                      RubyKaigi 2023に社員4名で参加 & LTで1名登壇しました - BOOK☆WALKER inside
                                                    • Kotlinのコルーチンを実装面から検証する

                                                      今回のアプリケーションでは、RESTfulサービスを複数回コールする際の安全性と効率性に関する、ごく一般的な問題を取り上げています。記事では"Where's Waldo(ウォーリーを探せ)"のテキスト版 — "Waldo"を見つけるまで、名前のチェーンを追いかける処理を開発します。 ここにHttp4kを使って記述した、完全なRESTfulサービスがあります。Http4kは、Marius Eriksen氏の有名な論文で述べられている関数サーバアーキテクチャのKotlin版で、Kotlin以外にもScala(Http4s)やJava 8以降(Http4j)など、さまざまな言語で実装されています。 今回のサービスには、Mapによって名前のチェーンを実装した単一のエンドポイントがあり、名前を与えることで、マッチした値とステータスコード200か、あるいはエラーメッセージと404のいずれかが返されます

                                                        Kotlinのコルーチンを実装面から検証する
                                                      • 富士通のA64FX搭載スパコン「PRIMEHPC FX1000/FX700」を読み解く - SC19

                                                        SC19のExhibitor Forumにおいて、富士通は新スパコン「PRIMEHPC FX1000」と「PRIMEHPC FX700」を発表した。発表を行ったのは、次世代テクニカルコンピューティング開発本部システム統括部の清水部長である。 SC19のExhibitor ForumでFX1000とFX700スパコンを発表する富士通の清水氏 3種類のA64FXスパコンを有する富士通 これで富士通は、FX700とFX1000という商用のスパコンと日の丸スパコンとして開発した「富岳」というA64FXをCPUとする3種のスパコンを有することになる。これら3種のマシンを比較したのが次の図である。 富岳とFX1000はラック1本に384CPUを収容し、水冷になっている。ラックの寸法なども同じであり、塗装などを別にすれば同じマシンである。 一方、FX700は2Uの薄型のラックマウントサーバとなっている。

                                                          富士通のA64FX搭載スパコン「PRIMEHPC FX1000/FX700」を読み解く - SC19
                                                        • プログラミングRust 第2版

                                                          次世代ブラウザ開発用にMozillaによって開発されたRustは、C/C++並みのパフォーマンスと低レベルの制御能力に加え、メモリとスレッドの安全性を担保し、さらに並行性にも優れるといった特徴を持つ、優秀な言語です。本書はMozillaで実際にRustを使ってFirefoxを開発している著者らによる、言語の概要と用途について解説する書籍で、Rustのほとんどの機能を詳細にカバーします。Rustのメジャーバージョンアップにより非同期処理が可能となったことに対応し、第2版では新たに非同期処理の章を設け、この機能を詳細に解説しています。Rust 2021対応。 訳者まえがき まえがき 1章 システムプログラマにもっといいものを 1.1 Rustはプログラマの負担を引き受ける 1.2 並列プログラムを飼いならす 1.3 にもかかわらずRustは速い 1.4 Rustでは協調するのも容易 2章 Ru

                                                            プログラミングRust 第2版
                                                          • RubyKaigi 2021で発表された新しいdebug.gemを試してみた

                                                            Leaner Technologies の ころちゃん(@corocn) です。 RubyKaigi Takeout 2021 に業務で参加してきました。一緒に参加した同僚が型や RBS 周りの記事を書いてくれるようなので、デバッガ周りの話を振り返っておきます。デバッガは日々お世話になっていて最近関心の高いトピックなので選びました。 The Art of Execution Control for Ruby's Debugger Agenda なぜ新しい debug.gem か? インストールと使い方 Record and replay を試す VSCode 拡張と Remote Debugging を試す Rails 7 と Kernel#debugger の話 なぜ新しいdebug.gem? パフォーマンスを改善したい 発表動画14:00あたりから引用 既存のデバッガの場合、ブレークポ

                                                              RubyKaigi 2021で発表された新しいdebug.gemを試してみた
                                                            • チーム開発初心者のためのコードレビュー入門 - MyEnigma

                                                              チーム開発実践入門──共同作業を円滑に行うツール・メソッド WEB+DB PRESS plus 目次 目次 はじめに コードレビューツール GitHub Redmine Code Review プラグイン Review board Upsource Crucible コードレビューで注意すべきこと レビュワーは完璧主義にならない 可能であれば、コードレビューを開始する前にレビュワーを選び、大まかな設計方針を決めておく できるだけ良い部分は褒める コードレビューのサイズはできるだけ小さくする コードレビューの反応はできるだけ早くする コードスタイルはスタイルガイドに従う レビュワーがレビューで、確認すべきこと コメントは論理的に、そして礼儀をもって 良いコードレビューの作り方 コードレビューでよく使われる言葉 PR LGTM IMO Nit TL;DR. 参考資料 MyEnigma Supp

                                                                チーム開発初心者のためのコードレビュー入門 - MyEnigma
                                                              • GCDを使った非同期処理について改めて調べてみた | DevelopersIO

                                                                iOSアプリを開発する際のGCDを使った非同期処理について、理解があやふやだったので改めて調べて、色々と試してみたその結果とメモ。 大阪オフィスの山田です。久しぶりの執筆です。iOSアプリを開発する際のGCDを使った非同期処理について、理解があやふやだったので改めて調べて色々と試してみました。備忘録です。 GCDの基礎知識 GCDについて GCDとはGrand Central Dispatchの略です。ディスパッチキューにタスクを詰めると、タスクを実行してくれます。 キューのタスク処理について キューのタスク処理の方法は2種類あります。 Serial(直列) Concurrent(並列) Serialは、前のタスクが完了次第、次のタスクが実行されます。そのため、同時に実行されるタスクは1つです。Concurrentは、前のタスクの処理状況に関わらず、次のタスクが実行されます。 キューの種類

                                                                  GCDを使った非同期処理について改めて調べてみた | DevelopersIO
                                                                • 第231回 Intelの新プロセッサ「第10世代Coreプロセッサ」3つの特徴をざっくり検証

                                                                  連載目次 2019年8月頭に、Intelが第10世代と称するIntel Coreプロセッサ製品群を発表した(Intelのプレスリリース「インテル、次世代のノートPC体験を提供する、最初の第10世代インテルCoreプロセッサーを発表」)。頭脳放談「第230回 AMD Ryzenが高コストパフォーマンスを実現した3つの理由」で取り上げたように、AMDの攻勢にさらされているIntelの反撃の第一弾と評価したいところだが少々違う。 10nmプロセスの量産開始で供給問題も解消か? ターゲット市場がモバイルPC向けであり、AMDが挑んできた主力PCでのコスパ勝負とは、ちょっとズレたところに一石を置いたという感じだ。それでもIntelにとって大きな一歩であるのは、長らく待たれた10nmプロセスを使った本格量産製品であることだ(頭脳放談「第225回 なぜ『IntelのCPU不足』はなかなか解決されないのか

                                                                    第231回 Intelの新プロセッサ「第10世代Coreプロセッサ」3つの特徴をざっくり検証
                                                                  • TornadoVM: GPUとFPGAでJavaを高速化する

                                                                    このようなコンピューティングにおける新しい異種デバイスの中には、マルチコアCPU、GPU(Graphics Processing Unit)、FPGA(Field Programmable Gate Array)などがあります。多様性はすばらしいことですが、これら新しいデバイスを効率的にプログラムする方法が必要です。 その最たるものとして挙げられるのが、ヘテロジニアス(異種)プログラミング言語の代表格である、CUDAとOpenCLの2つです。しかしこれらの言語では、APIに低レベルな機能が現れているため、専門家でないユーザが使うには非常に難しいものになっています。その例として、OpenCL 3.0標準の中から次の一節を引用してご紹介しましょう。 OpenCLが対象とするのは、ポータブルかつ効率的なコードの記述を望む専門的プログラマです。[...] 従ってOpenCLでは、低レベルのハードウ

                                                                      TornadoVM: GPUとFPGAでJavaを高速化する
                                                                    • アムダールの法則とは?

                                                                      「アムダールの法則(Amdahl’s Law)」は、コンピュータ科学と並列処理に関連する重要な原則の一つです。ジーン・アムダール(Gene Amdahl)によって1967年に提唱されました。この法則は、計算タスクを並列処理に分割する際に、並列化によって得られる性能向上の限界を示すものです。 以下に、アムダールの法則の詳細な説明を提供します。 アムダールの法則の公式 アムダールの法則は、次の数式で表現されます。 \[S_{\text{total}} = \frac{1}{(1 – P) + \frac{P}{N}}\] ここで、\(S_{\text{total}}\) は全体の性能向上率を表し、\(P\) は並列処理によって改善される割合(プログラムの並列部分の割合)、\(N\) はプロセッサの数を表します。 アムダールの法則の解釈 アムダールの法則は、あるプログラムを並列処理によって高速化

                                                                        アムダールの法則とは?
                                                                      • C++ AMPの死について

                                                                        C++ AMPの死について C++ AMPが死ぬことが決まった.本稿では,C++ AMPとは何だったのか,直近・今後のC++ AMPの動向,C++ AMPの死,そしてC++ AMPの代替となりうる存在についての検討を,個人の見解として述べる. C++ AMPとは C++ AMP(Accelerated Massive Parallelism)はMicrosoftが策定したデータ並列プログラミングAPIである[1].C++ AMPで記述されたプログラムはCPUのSIMD演算器やGPUといったデータ並列に強い(≒SIMDな)プロセッサにオフロードされ,高速に処理される[2].C++の名を冠する通り,C++ AMPはC++をベースとしてライブラリとコンパイラ拡張で構成されており,CUDA C/C++のようにデータ並列部分とそれ以外のコードを単一ソースに記述することができる.このあたりは実例を見た

                                                                          C++ AMPの死について
                                                                        • 並列プログラミング処理系Pelemayの
ARMアーキテクチャと
IoTプラットフォームNervesへの適用

                                                                          近年ではIoTでエッジ/フォグ・コンピューティングを行う事例が増えてきており,IoTにも計算パワーが求められるようになってきている.そこで,近年,アメリカを中心に注目を集めている開発プラットフォームNervesと,我々が研究開発を進めている並列処理ネイティブコード生成系である Pelemay Super-Parallelism を組合わせて,エッジ/フォグ・コンピューティングに用いることを提案する.現状の Pelemay は Clang / GCC を使って単一コアのSIMD命令を含むネイティブコードを生成する.本研究により,Raspberry Pi 3 Model B+ (ARM Cortex-A53ベース) と Raspberri Pi 4 Model B (ARM Cortex-A72ベース)の Nerves システム上と,Jetson Nano (ARM Cortex-A57ベース

                                                                            並列プログラミング処理系Pelemayの
ARMアーキテクチャと
IoTプラットフォームNervesへの適用
                                                                          • GopherCon2019参加レポート|Go Sagawa

                                                                            GopherCon2019に参加してきました。 とても楽しく、刺激を受けた事、考えさせられた事がたくさんありました。内容の修正や情報や写真の追加は随時するとして、忘れないうちに伝えられるだけ内容をまとめておこうと思います。 # 1. この記事の目的、誰に何を伝えたいか? 主に2点で、私をGopherConに送り出してくれてカンファレンスの参加費用を出してくれた会社と会社のみなさま、あと現地で出会ったみなさんに実際どうだったか、どう見えていたかを伝えたいのが一つです。 あとはもう一つがGopherConに行ってみたいなと思う人を後押ししたいという点です。行く人は増えてきているにしろ、まだ一人で行くには敷居の高さがあるかと思いますので、色々な情報をクリアにすることでそこを少しでも下げられればと思っています。 # 2. 自分のバックグラウンド and factoryという100人規模の会社に所属

                                                                              GopherCon2019参加レポート|Go Sagawa
                                                                            • The Rust Programming Language: 2018 Edition

                                                                              Last Commit Date of Markdown Sources: Tue Oct 25 10:20:24 2022 +0000 i The Rust Programming Language 日本語版 著:Steve Klabnik、Carol Nichols、貢献:Rust コミュニティ このテキストのこの版では Rust 1.58(2022 年 1 月 13 日リリース)かそれ以降が使われているこ とを前提にしています。Rust をインストールしたりアップデートしたりするには第 1 章の「インス トール」節を読んでください。 HTML 版は https://doc.rust-lang.org/stable/book/で公開されています。オフラインのときは、 rustup でインストールした Rust を使って rustup docs --book で開けます。 訳注:日本語の

                                                                              • 東工大のスパコンTSUBAME4.0が来春稼働開始 AI向け演算性能952ペタフロップス、「もっとみんなのスパコン」の実現へ

                                                                                東京工業大学学術国際情報センター(以下、GSIC)は、次世代スパコン「TSUBAME[用語1]4.0」の来春稼動に向けて構築を開始します。TSUBAME4.0の理論演算性能は科学技術計算で利用される64bitの倍精度[用語2a]で66.8ペタフロップス(Peta Flops)[用語3]、人工知能(AI(Artificial Intelligence)[用語4])などで利用される16bitの半精度[用語2b]では952ペタフロップスの性能を達成する予定です。これは、それぞれの演算精度において現存する国内のスパコンの中ではスーパーコンピュータ「富岳」に次ぐ2位相当となります。これまでのTSUBAMEシリーズと同様に、科学技術計算・ビッグデータ解析・AIなど幅広い分野で積極的に活用してまいります。 東工大のスパコンであるTSUBAMEシリーズは、2006年4月のTSUBAME1.0稼働以来長年に

                                                                                  東工大のスパコンTSUBAME4.0が来春稼働開始 AI向け演算性能952ペタフロップス、「もっとみんなのスパコン」の実現へ
                                                                                • Pythonの実行を高速化する方法を一覧でまとめてみた - Qiita

                                                                                  1. クラスタレベル 複数のマシンを使用するクラスタレベルで分散処理することで高速化する方法です。 もうここまでくると Python というプログラミング言語レベルではなくなりますが、高速化の選択肢として説明します。 Hadoop 大量のデータを複数マシンに分散して処理させるオープンソースのプラットフォーム。 Google社内基盤技術をオープンソースとして実装したものらしいです。 Apache Spark カリフォルニア大学バークレー校で開発された分散処理フレームワーク。 Hadoopよりもメモリをうまく使うことで、機械学習を高速で実行できるようにしたものです。 2. コンピュータレベル 1台のコンピュータの中で高速化する方法です。 高速化のアプローチとしては、並列化、GPGPU、ハードウェアの選択があります。 2-1. 並列化 一つのマシンの中で、プログラムを並列化して実行して高速化する

                                                                                    Pythonの実行を高速化する方法を一覧でまとめてみた - Qiita