C#

CUDA.NET利用メモ

C#で、CUDA.NETを利用してCUDAでプログラムを実行するまでに、一手間かかったので、それまでの手順で引っかかったところを中心にメモ。 利用環境 GeForce GTX285 WindowsXP Pro. SP3 (32bit) VisualStudio2008 Pro. ForceWare 195.62, tool-kit 2.3, SDK 2.3…

配列は参照渡し

C#

メソッドの引数の扱いは、 参照渡し クラス 値渡し 構造体と組み込みの数値*1 で覚えてて、いや、まぁこれはたぶんあってるんだけど、それはさておき。組み込みの数値が値渡しなので、数値の配列も値渡しだろうって思ってコード書いてたらドツボにはまった。…

.NET流行ってきてるんだなぁとか思った

C#

iPhoneでC#アプリが審査に通るワケ - OSS実装「Mono」で広がる.NETの応用 http://www.atmarkit.co.jp/news/200901/29/mono.html iPhone向けにC#で書かれたアプリ*1は、Unity/3Dっていう、Monoをベースに作られたフレームワークを使っているようなのですが、…

偽共有 - スレッド間での同一キャッシュラインの共有問題

C#

.NET の問題 : 偽共有 http://msdn.microsoft.com/ja-jp/magazine/cc872851.aspx メニイコア前提の話になるけど、複数のスレッドを立てて並列処理する際、コード上ではそれぞれのスレッドに別々のデータ(変数)を与えていても、キャッシュラインのサイズ以下…

非同期デリゲートを用いた並列計算の結果に関する考察(3)

C#

最初に 非同期デリゲートを用いた並列計算の結果に関する考察(1) http://d.hatena.ne.jp/kaminarioyaji/20081227/1230404072 で書いた計算プログラムが、コア/CPU間で非共有型のL2キャッシュをもつPentiumD・Athlon64X2に限って並列化の効果が薄かったので、…

非同期デリゲートを用いた並列計算の結果に関する考察(2)

C#

最初に 非同期デリゲートを用いた並列計算の結果に関する考察(1) http://d.hatena.ne.jp/kaminarioyaji/20081227/1230404072 の続き。前回載せた結果に対する考察部分。 考察 この計算で計っているCPU性能 今回計測した計算は、1000x5000回の繰り返し計算な…

非同期デリゲートを用いた並列計算の結果に関する考察(1)

C#

最初に ふだんの研究で用いている集光光学素子での波動伝播シミュレーションの計算(フレネル・キルヒホッフ回折積分)を非同期デリゲートを用いて並列化しました。 http://d.hatena.ne.jp/kaminarioyaji/20081223/1230056152並列化の効果の程を確認するため、…

非同期デリゲートを用いた並列計算

C#

背景 普段の研究では、光学素子の集光シミュレーションにはフレネル・キルヒホッフの回折積分を用いているのですが、諸所の事情から最近計算量が大幅に増え、C#でベタに書いたコードでは実行速度がネックに・・・。 というわけで、とりあえず計算部分をマルチス…

StopWatchクラス使用上の注意

C#

単純な(=動作クロックに対してリニアに処理時間が変わる)数値計算を行っていたのですが、StopWatchクラスを用いて処理時間を計測したところ、CPUの動作クロックを任意に変更(1GHz〜2GHz)しても、計った処理時間がほとんど変わらない、という問題に遭遇しま…

複素数クラス

C#

いままで複素数を計算する際、CodeProjectで公開されていたKarlsTools.Complexクラス(C++で作成されたdll)を使用していたのですが Complex math library for C# and VB.NET http://www.codeproject.com/KB/dotnet/complex_math.aspx プログラムに色々手を加…

Stopwatchクラス - 処理時間の計測

C#

処理時間を計るのに、今までSystem.Environment.TickCountや(全然精度のいらないものに関しては)DateTime.Nowで取得した値の差分を使ってたんだけど、もうちょっとクールな方法はないかな*1、ってことで調べてみた。 処理時間を正確に計測するには? http:…

Interface・抽象クラス継承の際の制限事項

C#

3つの補間法(ラグランジュ補間、スプライン補間、最小二乗法を用いた多項式近似での補間)をそれぞれ異なる静的クラスとして実装しようと考えた。で、どれも内部での計算方法が違うだけで、取る引数・返り値は同じ形式なため、Interpolationって抽象クラスor…

Mono.Simdの実装に関して

C#

この前書いた「.NET上でMono.Simd使ってみたいなぁ」っていうつぶやき http://d.hatena.ne.jp/kaminarioyaji/20081202/1228210788に対して、atsushieno様からトラックバックで、Mono.Simdの実装に関して詳しい説明を頂きました(一介の学生相手に時間を割い…

IEnumerableインターフェイスの使いどころ

『それmicrothreadで書くべきだよ』 http://d.hatena.ne.jp/yaneurao/20081125#p1 メソッドにIEnumerableインターフェイスつけて、return yieldで逐次、メソッド呼び出し元に処理を返しておけば、別スレッド立てたような感じで擬似的に並列処理を実現できる…

Mono.Simd

C#

Mono2.2でSIMDがサポートされたって話を目にしたので調べてたら、面白そうな動画、PDC 2008でのMonoに関する発表があったのでメモ(下記リンクは、動画の要点をまとめて下さっている方の日記)。したのが先週で、今日やっと消化。 http://d.hatena.ne.jp/ats…

Microsoft Chart Controls - グラフ作成用コントロール

C#

今までデータのプロットには、純正のグラフコントロールがなかったために、NPlotやZedGraphといったサードパーティのコントロールを使ってたのですが、ついにMS本家からグラフコントロールが発表されたようで。 http://www.microsoft.com/downloads/details.…

Lisys - 数値解析用ラッパーライブラリ

C#

http://d.hatena.ne.jp/KrdLab/20071003 今のところ、研究室でやってる数値解析は(先輩方が)0から書き起こしたっぽいコードを流用してやってるけど、C#でGSL使ったら楽になるかなぁとか思って調べてたら、たまたまそれっぽいのが見つかったのでメモ。CLAPAC…

CUDA.NET

CUDAをC#で使うためのライブラリ (Ver.2.0.3) http://www.gass-ltd.co.il/en/products/cuda.net/ Windows2000 SP4 VC#2005EE GeForce8400GS の環境で動かしてみたのでメモ。 CUDAのドライバ (Ver.178.28) Toolkit (Ver.2.0) の2つだけインストール。(ドライ…

WinRing0 - I/O Portの操作

C#

この前、ステッピングモータを駆動させるのにI/OPortを直接叩く必要があって、DriverLynxのDLIOport.dllってやつを、C#でDllImportして使ったんだけど、C#用のクラスが最初から用意されたWinRing0 っていう多機能&便利そうなのが…。(開発しているの普段お…