Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

インテル Core i7

新CPUが発売されましたが、最近私は、わくわく感がしません。
自宅機はAthron64*2(4600) + Vistaなんですが、とりたてて不満はありません。
いままでは、数年たてば、より強いパワーが欲しくなったのですが、今回はありません。
絵や音などの非テキスト処理をしないからなんでしょうね。
いままでは、OSが重くても、暫くするとCPU能力が上がって解消する構図でした。OSの肥大化も収まったようなので、その構図も解消したようです。
今、ムーアの法則が成立するか否かは知らないのですが、CPU速度UPが鈍化したのか、OSの肥大が止まったのか、一段落した感があります。

新CPUのコアは4つ有るそうですが、プログラムで使い分けできるのかなぁ。できるとしても、かなりハンドリング部分を書く必要がありそう。
テストを含めるとかなりな開発コストを要すると思うのです。
趣味開発では興味津々ですが、事務仕事で複数コアを使いこなす場面ってあるのかなぁ。
ゲーム業界や科学計算業界では有用でしょうが、マルチタスクとマルチスレッドのどちらが使われるでしょうか。
マルチスレッドでトリッキーなプログラムよりも、マルチタスク/CPU * 複数本体のシステムのほうが作りが簡潔になりそう。

事務処理で見れば「ExcelなどのOffice製品を使う分には、数年前の機種で充分」というのは随分前から言われてます。それが実体だと思います。
Excelも利用面だけでみれば、Excel95機能で間に合うようです。初期段階で、完成粋に達していたと言えるかも。

技術計算が入るアプリも多々あり、FFT(高速フーリエ変換)を使うアプリもあります。こちらは、高速CPUが必要です。
今は FFTの結果がリアルで得られるので、(昔は一回のFFTの結果を出すのに数時間要した、バッチの時代でした)有難いことです。

数十万円の電子レンジを買っても、「暖めるだけにしか使っていない」が多いみたいですね。1万円のレンジで足りる?
それだけユーザーの必要度の幅が広がったとも言えますね。

投稿日時 : 2009年9月14日 0:10

Feedback

# re: インテル Core i7 2009/09/14 6:28 Pasie.

> マルチスレッドでトリッキーなプログラムよりも
 そんな.net全否定な発言を…(笑
 まあ冗談抜きでシングルスレッド強制モードとかほしかったりするんですけどね…

# re: インテル Core i7 2009/09/14 9:54 れい

まだまだ遅すぎです。
全然足りない。

消費電力100倍でもいいから10倍の速度のCPUが欲しい。

大抵の場合、並列にできない計算だらけなんで、マルチコアに力入れすぎなのも嫌。

「速度は十分」とかいうのはシングルコアの速度がせめてあと1000倍くらいになってからにしていただきたい!

# re: インテル Core i7 2009/09/14 22:28 こあら

CPUのパイプライン処理の延長線上で、
一つのアプリ(スレッド)を、マルチコアで処理するようになったりしないですかね?
クラウドのイメージに通じるような。

# re: インテル Core i7 2009/09/15 0:54 ognac

>まあ冗談抜きでシングルスレッド強制モードとかほしかったりするんですけどね…
? 無指定だと、シングルスレッドにならないの?

>あと1000倍くらいになってからにしていただきたい!
クロックが上限に近いみたいなので、シングルで1000倍はどうでしょうか。
RDBアプリ(事務アプリ)と技術計算アプリは、OS/CPUに対する要求が違うので、同一のCPU/汎用OSで賄うのは、無理があると思います。
スパコンの流れの用途を86系CPUに求めるのは酷かも。でも、Risc系WorkStationは最近、聞きませんねどうなっているのやら。
 RDBアクセスはmsec単位なので、演算速度のμSec単位とは比較にならないですが、処理の基本単位になります。事務アプリはmSec単位で考えますね。そこからして意識に差が出ます。
技術計算は専用CPUマシンを作った方が良いと思います。
 でも、Windowsの元で可能になったら、そのほうが便利かな?

>一つのアプリ(スレッド)を、マルチコアで処理するようになったりしないですかね?
1スレッド・マルチコア!!! どのように制御するのだろう。 アプリでハンドリングするのは堪忍して欲しい。

# re: インテル Core i7 2009/09/15 22:05 Pasie.

> ? 無指定だと、シングルスレッドにならないの?

 んと。例えば以下のようなやつ。

> Module Module1
>
>   Private WithEvents n As AsyncIO
>
>   Sub Main()
>     System.Console.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId)
>     n = New AsyncIO
>
>     System.Console.ReadLine()
>   End Sub
>
>   Private Sub n_Notify() Handles n.Notify
>     System.Console.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId)
>   End Sub
>
> End Module
>
>
> Public Class AsyncIO
>
>   Event Notify()
>
>   Sub New()
>     Dim t As New System.Threading.Thread(AddressOf RaiseNotify)
>     t.Start()
>   End Sub
>
>   Sub RaiseNotify()
>     System.Threading.Thread.Sleep(1000)
>     RaiseEvent Notify()
>   End Sub
>
> End Class

 呼び出す先クラス内でスレッドが作られてて、イベントが戻る時にオブジェクトが生成されたスレッドではなく、クラス内で作られたスレッドから呼ばれる様な場合、呼び出し元のコードだけではマルチスレッドになっていることが検知しにくい場合があります。そのクラスがI/Oを扱っていたりすると人知れずはまる場合が多い >_<;
 具体例としては System.IO.Ports.SerialPort.DataReceived とかそういうやつ。

# re: インテル Core i7 2009/09/15 23:04 ognac

>具体例としては System.IO.Ports.SerialPort.DataReceived とかそういうやつ。
なるほど。でも開発者は意識して、コーディングしている筈なので、ハマルのは自己責任のような気もする。
開発者以外が手を入れるときは、ハマるかも。
「気づかないタイミングで呼ばれる」というのは、いいような、わるいような。

# re: インテル Core i7 2009/09/15 23:35 Pasie.

>開発者は意識して、コーディングしている筈

 ひとりで全てを作っているなら自己責任ですけど、複数でかなり深いところで、実装段階でスレッドを起こされていたりするわけですよ。あるいは例に出した様な.net frameworkからして別スレッドでイベントを戻す例があるわけで。
 クラスを使っている側としては、なにも考えなければ同一スレッドで戻ってくると思っていたりするわけで(たとえば、System.Windows.Forms.Button.Click とか)故になにげなくコーディングしていると、あるときなんか変な動きをするという話となり…
なんでもう強制的に指定クラスは特定スレッド(newしたスレッド?)でしか操作できないようするようなオプションか何かあって、多スレッドからアクセスされる場合、裏でinvokeしまくるとかなんとか勝手にやってくれんかなあとかなんとか思うわけです。でもどっかでデッドロックしそうな気もするけど…

 せめて、System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls
でやっているようなチェックをいれれぱ良いのかも知れないがやり方がわからん…(汗

# re: インテル Core i7 2009/09/16 0:39 ognac

>System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls
この類のコーディング経験がないので、なんとも言えませんが..orz;
確かに、自分のスレッド以外で通知が来ると辛いですね。

キチンと理解している開発者なら軽く書いても通じますが、そうでない場合は.....
プログラム仕様書にも書きにくいだろうしね。そもそもCallBack関数自体、仕様書に表現しにくいのに、別スレッドで呼び出される部分も伝え難くそう。

マルチスレッドアプリはそれだけ考慮点が多いということですね。やっぱり開発コストが高そう。
シンプルisベストだぁ。

# re: インテル Core i7 2009/09/16 0:56 Pasie.

 問題なのは、マルチスレッドアプリが難しいことではなくて、シングルスレッドで対応できるはずのアプリで、シングルスレッドで作っているつもりなのに、なぜか別のスレッドが混ざって、いつのまにかマルチスレッドアプリ(この時点でバグ決定--;)になってしまうところです。
 .netは恐ろしいのお。
 南無。

# re: インテル Core i7 2009/09/16 8:55 ognac

>シングルスレッドで作っているつもりなのに
自分の意図と違う動作なのか!
それは、いかんですね。同感ですね。

タイトル
名前
Url
コメント