はてなキーワード: 演算とは
長崎大学が開発したコンピューターは、まともに開発したら数百億円もかかるような代物だったのかということ。元の記事を読むとそういう風にしか読めないように書いてるけど、そうじゃなくて、「数百億円」というのは事業仕分けで言ってる「スパコン」のことなんでしょう?
いや、普通に開発したら数百億するようなものですよ。
地球シミュレータ2と比較しているでしょう?
あれは、122TFLOPS(テラフロップス:1秒間に1兆回の浮動小数点演算性能)とか言っているけれど、その前身のシステムで600億を投じています。
そして、今回はそれを越えたと発表したんです。
もちろん、演算性能だけを比較しているので、一概に同じ土俵とは言えないけれど。
現代のコンピュータにとってネットワークの利用が大前提になったように、人間の「能力」が演算装置や外部記憶の利用を抜きに語れなくなったという点については同意してもらえると思う。
そういう時代状況の下で、スタンドアローン(Stand Alone)という制約を課した状況での能力測定に、「縛りプレイ」的なお遊びとして以上の意義は本当にあるんだろうか。
今、俺は統合開発環境を使って中規模ソフトウェアの開発の仕事をやってるんだが、もうオフライン環境のPC98で、テキストエディタとにらめっこしてコードを書いてた時代には戻れないと感じている。
そもそも、グーグル先生が0.5秒でAPIマニュアルやベストプラクティスを提示してくれる時代に、APIの暗号みたいな引数の順番を暗記する必要性はどこにもない。また、統合開発環境が提供する静的解析や単体テストなどの支援機能をフル活用することで、つまらないバグを作りこむことは本当に減ったし、見通しの良いプログラムを書きやすくなった。実際、俺のプログラミング「能力」は、スタンドアロンでやってた頃と比べて確実に向上していると思う。
コンピュータによる支援が当たり前となった現代、我々が本当に競うべきフィールドは、「コンピュータにできない、人間にしかできないこと」が求められる領域へと確実にシフトしている。そんな時代に、いまさら暗算力や暗記力なんか競ってどうすんの? というのはかなり真面目に思う。
NECのベクトルコンピューティングの粋を集めた地球シミュレーターがすげえが流石に近年型落ち気味
→日本のスパコン三社(NEC・日立・富士通)の総力を結集してスカラー型とベクトル型の長所を併せ持つまったく新しいスパコン作ろうぜ!
→新しすぎて開発難航
→富士通単独なのでベクトル型云々の話はなかったことに。普通に富士通のスカラー型スパコンのごついのを開発することになる
→あれ? スカラー型ならいまどきSPARCでもなくね? PCアーティテクチャなものの巨大クラスタの方が安上がりかつ演算速度早くならね?<いまここ
って話だと理解してるんだが。
仕分け人の「スパコン無用!」に聞こえる発言は乱暴だし、いや実際研究活動に最新鋭スパコンは要るのは要るし早ければ早いほど良いのは確かなのだが、現状には問題ありすぎなのは確かなので、
「今の富士通との一社随意契約はご破算! 目標スカラー演算能力だけ示してIBMそのほか海外勢にも参加してもらって提案協議からやり直します(たぶん海外が勝つから」
って方向の『抜本的見直し』じゃいかんのかなあ、と。
帰ってきたら素朴な疑問に乱暴な返答が…
気象や気候のシミュレーションをしたい人が演算量を求めるあまりにスパコンほしくなったんだよ。
流体の計算というのは演算量食いの典型みたいなもんで、さらにこれがベクトル演算の鬼なんで、今となっては世界でも珍しい方式のスパコンになっちゃってるんだよ。
つーても俺ESのファンではあっても詳しい人でもなんでもないんだけど…
えーとね、具体的には以下のようなものに使われているよ。
https://www.jamstec.go.jp/es-repository/meta-bin/bs-brows.cgi
一番最初はこれだ。
https://www.jamstec.go.jp/es-repository/meta-bin/mt-pdetail.cgi?tlang=0&cd=00001087
そもそも何でシミュレーションしたいかって言うと、地球の気候はこうに違いない、と自分で考えたモデルがあったとして過去の観測結果からその少し先を正確に予想できたら結構良いモデルかも、と思えるじゃん?良いモデルができるまで繰り返し繰り返し計算するじゃんか。
で、良いモデルができたら今のデータ入れれば未来が予測できるじゃん。ありったけ精密にしたいし、ありったけ先のほうまで計算したいよね?
そしたら地球の温暖化が果たして起こるのか、起こるとしたらどのくらい起こるのか、なんてのも計算できるわな。それって人類の未来にかかわる仕事だよね。産業界的にもマジ現金にかかわる話だしねえ。
まあLinpack走らせれば比べられるといえばいえるんだけどねえ。
なんかあのニュースに対する反応をいろいろなところで見て地球シミュレーターの凄さと京速計算機のしょぼさをわかってない人が結構いるなあと。
ESの凄いところは、NECにほぼ製品に近いものをつくってもらって買ってきて、気象予測に必要なだけ建物を埋め尽くして、気象予測のために改良がんばったら「原理的に不得意なはずの」ベンチマークソフトを走らせたときの性能ですらトップクラスに長いことい続けたということ。
製品に近いものを使ってるから、後継機が出てきて置き換えて電気代削減なんてできた。
京速はすごい一発狙いで「ぼくたちのかんがえるさいきょうこんぴゅーたをつくりたい」が先にたっちゃってる。すくなくとも今までのプレゼンはそうなってる。そういう場合、作るほうは何を基準に改良してよいかわからない。ベクトルとスカラー混在がだめになった時点ですでに死んでいるものを延命してどうする。
とりのこされた富士通が、開発費ジャブジャブ入れられて作ったとしてその個々の「何にも特化していない」ノードは外販できるのかよっていうね。
目的があっての演算能力と、そうでない演算能力はぜんぜん違うよね。前者が本来の目的のために出せる力と後者が想定していなかった特定の目的に使われたときの力では、ベンチマークソフトとはまったく異なる結果が出るものだよね。
ブクマが20もついたので続き.
細胞骨格というと,モーターの役割つまり骨格筋における化学エネルギーの運動エネルギーの変換を取り持つアクチンミオシンすべり説が有名だけれど,細胞骨格はどうやら細胞生理において輸送作用をもち重要な機能を持つらしい.この辺を拡散モデルとの対比の分子モーターモデルで説明するのはちょっと理系のカップルならではかな.次元が減るのと熱物理化学的な親和性のための吸着力で輸送が可能になるというお話.細胞外骨格や結合基質もつながる.
結合組織は単に体の支持・結合に役立つだけではなく免疫・情報伝達・熱と物質の輸送等さまざまな機能がある.膠原病から反対に考えてみると普段の結合組織は発生と同様に機能が生理的に制御されている.
で,発生.発生はもう受精卵がヒトになるというので面白いこと請け合い.ちょっと妊娠の話とか混ぜて彼女の考え方を聞いてみてもよいかも,・・・,ではなくてモルフォゲンモデルという古典的な制御のモデルだけでなく最新のモデルの話もあわせて,アポトーシスの話や系統発生繰り返し説にふれてみるとよいかも.発生と完全に地続きのはなしになる.内部状態と環境とが幹細胞の分裂とできた細胞の分化とにかかわってくるんだ.
人間の器官レベルの制御機構は神経系と内分泌系が担っていて,後者の支配を前者が受け持つから神経系―受容効果系は人間の重要な部分.基本的には前者が高コストだから後者の低コストの制御も合わせて使うと考えればよい.糖の出し入れをいちいち神経で支配していたらエネルギーがかかりすぎる.
んで,システムズバイオロジーやさきほどの細胞間情報伝達のつながりで,ある細胞につきそこへの全入力(エネルギー(物質・輻射)・エントロピー・テンパラチャー)と全出力と全内部統合演算とを想定するモデルを考えられるから,細胞の出入力と内部統合につきシステムを建設することが多細胞でも重要なんだなどと自分の扱う細胞のシステム生物学の宣伝をしてみる.
単細胞でも人間でも何でもよいのだけれど,先ほどと同じで出入力と統合あるいは受容統合効果で考えることは同じ.で,感覚器からの情報を統合して,記憶などとも統合し出力をすることを考えるのだけれどこれがしこたま難しい.単細胞生物でも走性に記憶バイアスがかかることなんかが知られているけれど,ブラックボックスとして考えたくなる.強いて僕が考えていることはある入力に大しては特異的に発現しやすい出力があるということから統合のあり方を考えていくのと,神経の機能回路モデルを数学的に建設していくのと,があるけど全然専門外.恋した僕の気持ちも僕にはわからない.
地表(海含む)では重力が卓越していて生物や多くの物質は地表に束縛される.そこで単細胞生物と同様に生態系は多くのコンポーネントがあるシステムだと考えることができる.そのサブシステムとしては大陸・海洋・気象・太陽系との関係なんかがある.ある個体や生物種・生物群の動態は細胞内における細胞小器官の動態に似ているかな.どちらもシステム特性を規定しているのは物理法則だという点は共通.
ダーウィンはすごく頭がよかった.で『The Origin of Species by Means of Natural Selection: The Preservation of Favoured Races in the Struggle for Life』(1st,1859)のなかで
The slightest advantage in one being, at any age or during any season, over those with which it comes into competition, or better adaptation in however slight a degree to the surrounding physical conditions, will turn the balance.
という一節がある.(個体に変異が起こりその)性質がほんの少しでも有利なら生態系のバランスを変化さす,と括弧内をつけくわえてみると,変異と自然選択のモデルが考えられる.たとえば点変異がDNAにおこって対照状態で細胞生理の変化を定量的に計測ないしシミュレートするモデルとか.
僕の興味はというと数理モデルを物理法則のもとに組み立て細胞の制御システムモデルをリバースエンジニアリング的に,帰納することにあるんだよと再び告白.
承前:http://anond.hatelabo.jp/20091005002132
ケース1で問題なのは、for文内で行っている処理が引数付きのメソッド呼び出しであること。
「彼女」がやったように、for文の外でint変数を宣言するのはあり。
そうでないと、2つのfor文で別々にメモリを確保することになるから。
(といってもループカウンタを共通化するのはメモリの節約にはあまりならない。
むしろ可読性が落ちるし、C言語だとforループ脱出後のカウンタ変数の値は不定だった気もする)
ところが今回はカウンタ変数を引数に入れてメソッドを呼び出している。
そうなると、メソッド呼び出し先で、仮引数のメモリを毎回確保することになるので、
業務としてプログラミングするなら知っておいてほしい。
システムのデータが、あんまりにもひどい。Oracle なんだけど、まったく正規化されてない。
まったくだよ。第一正規化さえされてないんだよ。なんのための RDBMS なのか。気が狂いそうだ。
一応キーはついてるんだけど、業務的にまっったく意味の無いキーなので、全然使えやしない。扱いたいデータを特定する方法は、むろん、怪しげなロジック。属人的な経験則に頼るしか無い。これを作ったやつは万死をもって償うべきだと思うね、マジで。
データがそんな調子だから、ER図なんてもちろんないし、すこし気のきいたレポートを出そうとビューを作りまくっては、巨大な集合演算を発生させてパフォーマンスを落としている。
ぼく「えっ」
PHP「$a="0x0A";++$aは11になりますが」
ぼく「いえ"0x0B"です」
PHP「えっ」
ぼく「えっ」
PHP「まだインクリメントしたことがないということでしょうか」
ぼく「えっ」
PHP「えっ」
ぼく「変化するってことですか」
PHP「なにがですか」
ぼく「型が」
PHP「ああ文字列でも整数っぽい文字列なら自動で型変換されますよ」
ぼく「そうなんだすごい」
PHP「ではインクリメントいたしましょうか11ですよ」
ぼく「でも"0x0A"は明示的にキャストしたら0になりますよね」
PHP「えっ」
ぼく「えっ」
PHP「ああ16進数のことなら10進数に自動で変換してから演算するんですよ」
ぼく「なにそれこわい」
PHP「for($i="0w9Z";$i<12;$i++){echo $i;}と書くと $i="0w9Z", "0x0A", 11と変化します」
ぼく「なにそれきもちわるい」
PHP「えっ」
ぼく「えっ」
例えば下記の擬似コード
i = 1; while( i & 7 ) { i++; }
勘弁して。いや、わかるよ。言いたいことはさ。でも俺こういう書き方慣れてないから脳内で素早く2進数変換できないの。
いや単なるイディオムとして覚えてればいい話ってのはごもっともだけど普段こういう書き方しないからパッと出てこないんだよね。
一応これがいまいちわからない人のために説明すると
i = 1; while( i < 8 ) { i++; }
ってことだから。(厳密に言えば少し違うが、ここでの話はこれで良い)
なんちゅーかさ。条件が10以下とかに変わるだけで破綻するしさ。
ってかもう今時のコンパイラならコレくらいの変換勝手にやってくれるんじゃねーの?(さすがにまだまだ?この辺疎い)
そうであれば速度的は変わらないわけで単純に可読性&拡張性低下させてるだけの存在になるよね。
まあでもこれは基本的なことなんだけど、自分では書かなくても読めるようにはならないといけないってのは真なので文句を言ってるだけじゃ何も変わらない。
もっともっと書いて書いて書きまくろう。
上のような処理は各ビットが全部立ってる場合に有効になるので算出方法としては
(1 << x) - 1
となる。
つまり2の累乗から1引くと各ビットが立った数値となるわけなのです
10進数 2進数 1 00000001 3 00000011 7 00000111 15 00001111 31 00011111 63 00111111 127 01111111 :
ビットが全部立ってる数値を&で評価すると、その値を一つ超える数値、すなわち2の倍数が来るまでは常に真となるわけですね。
先ほどの処理で言うならばこういうことになります。
i & 7 = x (1)00000001 & (7)00000111 = 00000001 (2)00000010 & (7)00000111 = 00000010 (3)00000011 & (7)00000111 = 00000011 (4)00000100 & (7)00000111 = 00000100 (5)00000101 & (7)00000111 = 00000101 (6)00000110 & (7)00000111 = 00000110 (7)00000111 & (7)00000111 = 00000111 (8)00001000 & (7)00000111 = 00000000
という感じでiが8になった時点で7との論理演算の結果が偽となるため、ループが終了します。
正直スクリプト系言語から入るとこういう低レベルな計算を行うことは殆どないし、逆にこういうコードを書いてると先輩から怒られます。
なので自分で学ばない限りなかなかこれらのコードを直に理解できる状態にはならないので注意が必要です。
コードというのは「書けなくても、書かなくても、読めなければならない」これ鉄則。