そういや差分法でcavity書いたことなかったので書いてみた
ソースも公開した。
http://www.geocities.jp/yosuke_3141592/numerics/cavity_structured_fdm.html
2012/12/13
2012/12/12
GNU Screenの便利な使い方
仮想端末のscreenがこんなふうに使えるって知った。
screen -S Aで立ち上げ
screen でもう一個仮想端末を立ち上げる。
screen -X split -v で仮面分割後
Crtl + A TAB で新しく立ち上げた方に移動
Ctrl + A Shift + "で仮想端末を選択して上げる
でこんなふうに使える
コード書くときすごく便利。
screen -S Aで立ち上げ
screen でもう一個仮想端末を立ち上げる。
screen -X split -v で仮面分割後
Crtl + A TAB で新しく立ち上げた方に移動
Ctrl + A Shift + "で仮想端末を選択して上げる
でこんなふうに使える
コード書くときすごく便利。
2012/12/02
2012/11/19
頑張れAMD
AMDのニュースは最近明るいのきかない。
お安いのが多いのでAMDは結構好きなのだけども。 パソコンメーカがあんまり魅力的な商品を作っていない。 GPUではIntelよりも 優れた技術を持っているのに full HD でるノート型のPCを発売しているメーカーがない。
15.6型ぐらいでお安いのをどこか出してくれないだろうか。
今, lenovoの安いのを買おうかちょっと迷ってる、でも1366x768なのが残念。どこかのメーカーでAMDの製品にスイッチしてさらにお安くとかしてくれないだろうか。そういえば一時期Appleにそんな噂が...。 AMDと運命を共にするだろうけど
お安いのが多いのでAMDは結構好きなのだけども。 パソコンメーカがあんまり魅力的な商品を作っていない。 GPUではIntelよりも 優れた技術を持っているのに full HD でるノート型のPCを発売しているメーカーがない。
15.6型ぐらいでお安いのをどこか出してくれないだろうか。
今, lenovoの安いのを買おうかちょっと迷ってる、でも1366x768なのが残念。どこかのメーカーでAMDの製品にスイッチしてさらにお安くとかしてくれないだろうか。そういえば一時期Appleにそんな噂が...。 AMDと運命を共にするだろうけど
2012/11/15
CUDAの罠? ホスト側のメモリーを静的に取るな!
以下のコードを
nvcc -D DYNAMIC -arch=sm_20 vect_add.cu
nvcc -D STATIC -arch=sm_20 vect_add.cu
でコンパイルして実行してみると面白いことがわかる。
CUDAではCPU側のメモリーを動的に取る必要があるようだ。もし指定いない場合デバイスからホスト側にメモリーのコピー時にエラーコード11を出し止まる。
科学計算系のコードは静的に取ることが多いのでいちいち書き直すのめんどくさい。
GB
Here is a simple vector addition CUDA code. The difference is memory allocation one is static and one is dynamic. Test the code compiling by follwing options.
nvcc -D DYNAMIC -arch=sm_20 vect_add.cu
nvcc -D STATIC -arch=sm_20 vect_add.cu
For static version, memory copy from device to host should failed with error code 11. I'm unsure why this happened. I felt it's a bit inconvenient because most scientific codes allocate memory statically.
================================================
vect_add.cu
================================================
#include<iostream>
#include<cuda.h>
#define N 4
//--------------------------------------------
__global__ void device_hello(
//--------------------------------------------
const double *a,
const double *b,
double *c
){
size_t i = threadIdx.x + blockIdx.x * blockDim.x;
c[i] = a[i] + b[i];
}
//--------------------------------------------
int main(){
//--------------------------------------------
size_t i;
size_t n = N;
double *a,*b,*c;
#ifdef DYNAMIC
double *a_cuda, *b_cuda, *c_cuda;
#endif
#ifdef STATIC
double a_cuda[N], b_cuda[N], c_cuda[N];
#endif
cudaError_t stat;
#ifdef DYNAMIC
a = (double*)malloc(sizeof(double)*n);
b = (double*)malloc(sizeof(double)*n);
c = (double*)malloc(sizeof(double)*n);
#endif
for( i=0; i<n; i++){
a[i] = 1.0;
b[i] = i;
c[i] = 0.0;
}
cudaMalloc( (void**)&a_cuda, sizeof(double)*n );
cudaMalloc( (void**)&b_cuda, sizeof(double)*n );
cudaMalloc( (void**)&c_cuda, sizeof(double)*n );
cudaMemcpy( &a_cuda[0], a, sizeof(double)*n, cudaMemcpyHostToDevice );
cudaMemcpy( &b_cuda[0], b, sizeof(double)*n, cudaMemcpyHostToDevice );
cudaMemcpy( &c_cuda[0], c, sizeof(double)*n, cudaMemcpyHostToDevice );
device_hello<<<n,1>>>( a_cuda, b_cuda, c_cuda );
stat = cudaMemcpy( &c[0], c_cuda, sizeof(double)*n, cudaMemcpyDeviceToHost );
std::cout << "stat " << stat << std::endl;
//for( i=0; i<n; i++){
// std::cout << c[i] << std::endl;
//}
cudaFree( a_cuda );
cudaFree( b_cuda );
cudaFree( c_cuda );
#ifdef DYNAMIC
free( a );
free( b );
free( c );
#endif
return 0;}
nvcc -D DYNAMIC -arch=sm_20 vect_add.cu
nvcc -D STATIC -arch=sm_20 vect_add.cu
でコンパイルして実行してみると面白いことがわかる。
CUDAではCPU側のメモリーを動的に取る必要があるようだ。もし指定いない場合デバイスからホスト側にメモリーのコピー時にエラーコード11を出し止まる。
科学計算系のコードは静的に取ることが多いのでいちいち書き直すのめんどくさい。
GB
Here is a simple vector addition CUDA code. The difference is memory allocation one is static and one is dynamic. Test the code compiling by follwing options.
nvcc -D DYNAMIC -arch=sm_20 vect_add.cu
nvcc -D STATIC -arch=sm_20 vect_add.cu
For static version, memory copy from device to host should failed with error code 11. I'm unsure why this happened. I felt it's a bit inconvenient because most scientific codes allocate memory statically.
================================================
vect_add.cu
================================================
#include<iostream>
#include<cuda.h>
#define N 4
//--------------------------------------------
__global__ void device_hello(
//--------------------------------------------
const double *a,
const double *b,
double *c
){
size_t i = threadIdx.x + blockIdx.x * blockDim.x;
c[i] = a[i] + b[i];
}
//--------------------------------------------
int main(){
//--------------------------------------------
size_t i;
size_t n = N;
double *a,*b,*c;
#ifdef DYNAMIC
double *a_cuda, *b_cuda, *c_cuda;
#endif
#ifdef STATIC
double a_cuda[N], b_cuda[N], c_cuda[N];
#endif
cudaError_t stat;
#ifdef DYNAMIC
a = (double*)malloc(sizeof(double)*n);
b = (double*)malloc(sizeof(double)*n);
c = (double*)malloc(sizeof(double)*n);
#endif
for( i=0; i<n; i++){
a[i] = 1.0;
b[i] = i;
c[i] = 0.0;
}
cudaMalloc( (void**)&a_cuda, sizeof(double)*n );
cudaMalloc( (void**)&b_cuda, sizeof(double)*n );
cudaMalloc( (void**)&c_cuda, sizeof(double)*n );
cudaMemcpy( &a_cuda[0], a, sizeof(double)*n, cudaMemcpyHostToDevice );
cudaMemcpy( &b_cuda[0], b, sizeof(double)*n, cudaMemcpyHostToDevice );
cudaMemcpy( &c_cuda[0], c, sizeof(double)*n, cudaMemcpyHostToDevice );
device_hello<<<n,1>>>( a_cuda, b_cuda, c_cuda );
stat = cudaMemcpy( &c[0], c_cuda, sizeof(double)*n, cudaMemcpyDeviceToHost );
std::cout << "stat " << stat << std::endl;
//for( i=0; i<n; i++){
// std::cout << c[i] << std::endl;
//}
cudaFree( a_cuda );
cudaFree( b_cuda );
cudaFree( c_cuda );
#ifdef DYNAMIC
free( a );
free( b );
free( c );
#endif
return 0;}
2012/11/13
clang のperformance
himeno benchで結構出てる。倍精度はGCCと変わらない?
http://openbenchmarking.org/result/1203235-SU-GCC47LLVM92
http://openbenchmarking.org/result/1203235-SU-GCC47LLVM92
2012/11/07
Pthread vs OpenMPの性能比較してみた (科学計算)
ふと思いついてPthreadとOpenMPの性能の比較をしてみた。 blasを使った倍精度の内積計算。
AMD: C-50 (2core)
gcc: 4.7.0 (gmp-5.0.5)
real:
serial 1.079 s
Omp 0.830 s ( 2 thread )
pthread 1.225 s ( 2 thread )
ネットブックのじゃ、スレッド呼出のオーバヘッドの方が大きいのか? pthreadがなんだか遅い。 pthreadだけ作業用にglobalでとってあげたりしたんだけどあんまり早くならない。 pthread_joinが結構食ってる感じだ。外すと他と同じぐらいになるのだけれど答えが合わない。 内積計算はメモリーアクセスの問題の方が大きいかも
研究室のクラスタでやったらXeon( sandy世代 )
serial 0.19 s
Omp 0.001 s ( 2 thread )
pthread 0.001 s ( 2 thread )
もっと正確に測んなきゃだめですね。 とにかく順当に早くなっていました。Pthreadのほうが欠かなきゃいけない量が多いのでOpenMPですね。
EN
I just wondered which is faster OpenMP or Pthread. Here is my measurement.
The test code is illustrated below. It's a simple double precision dot product using cblas written in C. The compiler used was gcc-4.7.0. I initially tested on my Netbook with AMD C50 APU and got follwing result
real:
serial 1.079 s
Omp 0.830 s ( 2 thread )
pthread 1.225 s ( 2 thread )
I didn't got what I expected somehow pthread was slower than serial ??? For validation, I also tested on my Uni's Cluster, which has sandy bridge generation Xeon, and got follwing result.
serial 0.19 s
Omp 0.001 s ( 2 thread )
pthread 0.001 s ( 2 thread )
Looks OK now though more accurate measurement is required. Pthread looks slightly slower for me, yet pthread required more longer codes. Then I'm for OpenMP.
以下テストコード
( serial, pthread and OpenMP performance comparison by Cblas dot product)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<cblas.h>
#include<pthread.h>
#include<omp.h>
#define N 165535
//#define N 8
double *x_global;
double *y_global;
double tmp_global;
//--------------------------------------------------------
void init(
//--------------------------------------------------------
double *x,
double *y
){
size_t i;
for( i=0; i<N; i++ ){
x[i] = i;
y[i] = i;
}
}
//--------------------------------------------------------
void serial_dot(
//--------------------------------------------------------
double *x,
double *y
){
cblas_ddot( N, x, 1, y, 1 );
#ifdef SERIAL
printf( " %lf\n", cblas_ddot( N, x, 1, y, 1 ) );
#endif
}
//--------------------------------------------------------
void omp_dot(
//--------------------------------------------------------
double *x,
double *y
){
size_t i;
const size_t nprocs = omp_get_num_procs();
double tmp;
omp_set_num_threads(nprocs);
tmp = 0.0;
#pragma omp parallel for
for( i=0; i<nprocs; i++ ){
tmp += cblas_ddot( N/2, &x[i*N/2], 1, &y[i*N/2], 1 );
}
#ifdef OMP
printf("%lf\n",tmp );
#endif
}
//--------------------------------------------------------
void *pddot( void *arg ){
//--------------------------------------------------------
size_t i;
i = (size_t)arg;
#ifdef PTHREAD
printf("\tthread[%lu]\n",i);
#endif
tmp_global += cblas_ddot( N/2, &x_global[i*N/2], 1, &y_global[i*N/2], 1 );
}
//--------------------------------------------------------
void pthread_dot(
//--------------------------------------------------------
pthread_t threads[2],
double *x,
double *y
){
size_t i;
tmp_global = 0;
for( i=0; i<2; i++ ){
pthread_create( &threads[i], NULL, pddot, (void*)i );
}
for( i=0; i<2; i++ ){
pthread_join( threads[i], NULL );
}
#ifdef PTHREAD
printf("%lf\n",tmp_global);
#endif
}
//--------------------------------------------------------
int main(){
//--------------------------------------------------------
int i;
pthread_t threads[2];
double *x, *y;
x = (double*)malloc(sizeof(double)*N);
y = (double*)malloc(sizeof(double)*N);
x_global = (double*)malloc(sizeof(double)*N);
y_global = (double*)malloc(sizeof(double)*N);
init( x, y );
memcpy( x_global, x, sizeof(double)*N );
memcpy( y_global, y, sizeof(double)*N );
for( i=0; i<1000; i++ ){
//serial_dot( x, y );
//omp_dot( x, y );
pthread_dot( threads, x, y );
}
return 0;}
AMD: C-50 (2core)
gcc: 4.7.0 (gmp-5.0.5)
real:
serial 1.079 s
Omp 0.830 s ( 2 thread )
pthread 1.225 s ( 2 thread )
ネットブックのじゃ、スレッド呼出のオーバヘッドの方が大きいのか? pthreadがなんだか遅い。 pthreadだけ作業用にglobalでとってあげたりしたんだけどあんまり早くならない。 pthread_joinが結構食ってる感じだ。外すと他と同じぐらいになるのだけれど答えが合わない。 内積計算はメモリーアクセスの問題の方が大きいかも
研究室のクラスタでやったらXeon( sandy世代 )
serial 0.19 s
Omp 0.001 s ( 2 thread )
pthread 0.001 s ( 2 thread )
もっと正確に測んなきゃだめですね。 とにかく順当に早くなっていました。Pthreadのほうが欠かなきゃいけない量が多いのでOpenMPですね。
EN
I just wondered which is faster OpenMP or Pthread. Here is my measurement.
The test code is illustrated below. It's a simple double precision dot product using cblas written in C. The compiler used was gcc-4.7.0. I initially tested on my Netbook with AMD C50 APU and got follwing result
real:
serial 1.079 s
Omp 0.830 s ( 2 thread )
pthread 1.225 s ( 2 thread )
I didn't got what I expected somehow pthread was slower than serial ??? For validation, I also tested on my Uni's Cluster, which has sandy bridge generation Xeon, and got follwing result.
serial 0.19 s
Omp 0.001 s ( 2 thread )
pthread 0.001 s ( 2 thread )
Looks OK now though more accurate measurement is required. Pthread looks slightly slower for me, yet pthread required more longer codes. Then I'm for OpenMP.
以下テストコード
( serial, pthread and OpenMP performance comparison by Cblas dot product)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<cblas.h>
#include<pthread.h>
#include<omp.h>
#define N 165535
//#define N 8
double *x_global;
double *y_global;
double tmp_global;
//--------------------------------------------------------
void init(
//--------------------------------------------------------
double *x,
double *y
){
size_t i;
for( i=0; i<N; i++ ){
x[i] = i;
y[i] = i;
}
}
//--------------------------------------------------------
void serial_dot(
//--------------------------------------------------------
double *x,
double *y
){
cblas_ddot( N, x, 1, y, 1 );
#ifdef SERIAL
printf( " %lf\n", cblas_ddot( N, x, 1, y, 1 ) );
#endif
}
//--------------------------------------------------------
void omp_dot(
//--------------------------------------------------------
double *x,
double *y
){
size_t i;
const size_t nprocs = omp_get_num_procs();
double tmp;
omp_set_num_threads(nprocs);
tmp = 0.0;
#pragma omp parallel for
for( i=0; i<nprocs; i++ ){
tmp += cblas_ddot( N/2, &x[i*N/2], 1, &y[i*N/2], 1 );
}
#ifdef OMP
printf("%lf\n",tmp );
#endif
}
//--------------------------------------------------------
void *pddot( void *arg ){
//--------------------------------------------------------
size_t i;
i = (size_t)arg;
#ifdef PTHREAD
printf("\tthread[%lu]\n",i);
#endif
tmp_global += cblas_ddot( N/2, &x_global[i*N/2], 1, &y_global[i*N/2], 1 );
}
//--------------------------------------------------------
void pthread_dot(
//--------------------------------------------------------
pthread_t threads[2],
double *x,
double *y
){
size_t i;
tmp_global = 0;
for( i=0; i<2; i++ ){
pthread_create( &threads[i], NULL, pddot, (void*)i );
}
for( i=0; i<2; i++ ){
pthread_join( threads[i], NULL );
}
#ifdef PTHREAD
printf("%lf\n",tmp_global);
#endif
}
//--------------------------------------------------------
int main(){
//--------------------------------------------------------
int i;
pthread_t threads[2];
double *x, *y;
x = (double*)malloc(sizeof(double)*N);
y = (double*)malloc(sizeof(double)*N);
x_global = (double*)malloc(sizeof(double)*N);
y_global = (double*)malloc(sizeof(double)*N);
init( x, y );
memcpy( x_global, x, sizeof(double)*N );
memcpy( y_global, y, sizeof(double)*N );
for( i=0; i<1000; i++ ){
//serial_dot( x, y );
//omp_dot( x, y );
pthread_dot( threads, x, y );
}
return 0;}
2012/11/01
並列VTK PVTUのサンプル ( paralell VTU )
並列VTK形式 (VTU形式)
xml形式のVTUデータは並列用にも出力できます。小さいのを手で書くのは簡単なので作ってみた。
以下に示すように
parallel.pvtu
material1.vtu
material2.vtu
のファイルを同じディレクトリに用意する。 あとはparaviewでparallel.pvtuを開いてあげれば表示できる。
------------------------------------------------------------------------------------------------------------------------------
paralell.pvtu
------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<VTKFile type="PUnstructuredGrid" version="0.1" byte_order="LittleEndian">
<PUnstructuredGrid GhostLevel="0">
<PPoints>
<PDataArray type="Float32" Name="Position" NumberOfComponents="3"/>
</PPoints>
<PCells>
<PDataArray type="Int32" Name="connectivity" NumberOfComponents="1"/>
<PDataArray type="Int32" Name="offsets" NumberOfComponents="1"/>
<PDataArray type="UInt8" Name="types" NumberOfComponents="1"/>
</PCells>
<PCellData Scalars="Material">
<PDataArray type="Int32" Name="Material" NumberOfComponents="1"/>
</PCellData>
<Piece Source="material1.vtu"/>
<Piece Source="material2.vtu"/>
</PUnstructuredGrid>
</VTKFile>
------------------------------------------------------------------------------------------------------------------------------
material1.vtu
------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
<UnstructuredGrid>
<Piece NumberOfPoints="3" NumberOfCells="1">
<Points>
<DataArray type="Float32" Name="Position" NumberOfComponents="3" format="ascii">
0.0 0.0 0.0
1.0 1.0 0.0
0.0 1.0 0.0
</DataArray>
</Points>
<Cells>
<DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii">
0 1 2
</DataArray>
<DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii">
3
</DataArray>
<DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii">
5
</DataArray>
</Cells>
<CellData Scalars="Material">
<DataArray type="Int32" Name="Material" NumberOfComponents="1" format="ascii">
1
</DataArray>
</CellData>
</Piece>
</UnstructuredGrid>
</VTKFile>
------------------------------------------------------------------------------------------------------------------------------
material2.vtu
------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
<UnstructuredGrid>
<Piece NumberOfPoints="3" NumberOfCells="1">
<Points>
<DataArray type="Float32" Name="Position" NumberOfComponents="3" format="ascii">
0.0 0 0
1.0 0.0 0
1.0 1.0 0
</DataArray>
</Points>
<Cells>
<DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii">
0 1 2
</DataArray>
<DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii">
3
</DataArray>
<DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii">
5
</DataArray>
</Cells>
<CellData Scalars="Material">
<DataArray type="Int32" Name="Material" NumberOfComponents="1" format="ascii">
2
</DataArray>
</CellData>
</Piece>
</UnstructuredGrid>
</VTKFile>
こんなのが出るはず。青いのがmateral1で赤いのが2。
xml形式のVTUデータは並列用にも出力できます。小さいのを手で書くのは簡単なので作ってみた。
以下に示すように
parallel.pvtu
material1.vtu
material2.vtu
のファイルを同じディレクトリに用意する。 あとはparaviewでparallel.pvtuを開いてあげれば表示できる。
------------------------------------------------------------------------------------------------------------------------------
paralell.pvtu
------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<VTKFile type="PUnstructuredGrid" version="0.1" byte_order="LittleEndian">
<PUnstructuredGrid GhostLevel="0">
<PPoints>
<PDataArray type="Float32" Name="Position" NumberOfComponents="3"/>
</PPoints>
<PCells>
<PDataArray type="Int32" Name="connectivity" NumberOfComponents="1"/>
<PDataArray type="Int32" Name="offsets" NumberOfComponents="1"/>
<PDataArray type="UInt8" Name="types" NumberOfComponents="1"/>
</PCells>
<PCellData Scalars="Material">
<PDataArray type="Int32" Name="Material" NumberOfComponents="1"/>
</PCellData>
<Piece Source="material1.vtu"/>
<Piece Source="material2.vtu"/>
</PUnstructuredGrid>
</VTKFile>
------------------------------------------------------------------------------------------------------------------------------
material1.vtu
------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
<UnstructuredGrid>
<Piece NumberOfPoints="3" NumberOfCells="1">
<Points>
<DataArray type="Float32" Name="Position" NumberOfComponents="3" format="ascii">
0.0 0.0 0.0
1.0 1.0 0.0
0.0 1.0 0.0
</DataArray>
</Points>
<Cells>
<DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii">
0 1 2
</DataArray>
<DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii">
3
</DataArray>
<DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii">
5
</DataArray>
</Cells>
<CellData Scalars="Material">
<DataArray type="Int32" Name="Material" NumberOfComponents="1" format="ascii">
1
</DataArray>
</CellData>
</Piece>
</UnstructuredGrid>
</VTKFile>
------------------------------------------------------------------------------------------------------------------------------
material2.vtu
------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
<UnstructuredGrid>
<Piece NumberOfPoints="3" NumberOfCells="1">
<Points>
<DataArray type="Float32" Name="Position" NumberOfComponents="3" format="ascii">
0.0 0 0
1.0 0.0 0
1.0 1.0 0
</DataArray>
</Points>
<Cells>
<DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii">
0 1 2
</DataArray>
<DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii">
3
</DataArray>
<DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii">
5
</DataArray>
</Cells>
<CellData Scalars="Material">
<DataArray type="Int32" Name="Material" NumberOfComponents="1" format="ascii">
2
</DataArray>
</CellData>
</Piece>
</UnstructuredGrid>
</VTKFile>
こんなのが出るはず。青いのがmateral1で赤いのが2。
2012/10/29
FreeBSD
Sun のワークステーションを復活させ使用しようとしているのだが、sicentific linux のカーネルにバグあるらしく一定時間毎にerror messageがで続ける。
ECC memoryを使用した場合のみ起こるようでkernelのバージョンを上げる必要がある。あんまり時間もないので他のOSに乗り換えることにした。
ここはlinuxではなくBSDにしてみようと(突然)思っていろいろ調べてみた。NetBSDは前に使ったことがあって最初はそれにしようかと思ったのだけれども、調べてみるとFreeBSDがdesktop環境としてはいいらしい。じゃ使ってみるべ...ここから悪夢が始まった。
fdiskでHDDを初期化してインストールを始めたのだが、どうもうまくいかない。なぜか途中で止まってしまう。しかも、いつも同じところで止まらないので、原因も探れない。
HDDのpartitionをdefaultの設定でminimum installしたところどうにかでできたが、起動しない。困った。linuxのディスクでrescueモードで入ってみたがboot loderはOKなようだ。
こんなにインストールが難しいなんて知らなかった。
ECC memoryを使用した場合のみ起こるようでkernelのバージョンを上げる必要がある。あんまり時間もないので他のOSに乗り換えることにした。
ここはlinuxではなくBSDにしてみようと(突然)思っていろいろ調べてみた。NetBSDは前に使ったことがあって最初はそれにしようかと思ったのだけれども、調べてみるとFreeBSDがdesktop環境としてはいいらしい。じゃ使ってみるべ...ここから悪夢が始まった。
fdiskでHDDを初期化してインストールを始めたのだが、どうもうまくいかない。なぜか途中で止まってしまう。しかも、いつも同じところで止まらないので、原因も探れない。
HDDのpartitionをdefaultの設定でminimum installしたところどうにかでできたが、起動しない。困った。linuxのディスクでrescueモードで入ってみたがboot loderはOKなようだ。
こんなにインストールが難しいなんて知らなかった。
2012/10/17
流体計算屋のためのOS
GeekoCFDなる物があるらしい
http://susestudio.com/a/2qtLK2/geekocfd
OpenFOAM
Gmsh
Blender
など必要な物がほとんどはいってるらしい。
http://susestudio.com/a/2qtLK2/geekocfd
OpenFOAM
Gmsh
Blender
など必要な物がほとんどはいってるらしい。
2012/10/13
2012/10/03
メインの研究ミスったかも
博士三年にして大問題に直面している
今までNavier-StokesのソルバーにはMAC系(陽解法)の方法を用いてきたのだけれども、ここに来て陰解法を使わなければならない可能性が出てきた。しかもかなり高く。
ちなみに書いたことある方法
MAC (陽解法)
Crank-Nicolson + Adams-Bashforth (半陰解法)
simple系とかでも完全な陰解法ではないのだよね。いろいろ、論文読んでみたけれども移流項にたいしても反復が必要みたいでかなり面倒くさい。しかも、生成されるマトリックスがCG系の方法で収束しない場合があるらしい。GMRES必須とか書いてあった。
作るのに半年ぐらいかかると思う。
今までNavier-StokesのソルバーにはMAC系(陽解法)の方法を用いてきたのだけれども、ここに来て陰解法を使わなければならない可能性が出てきた。しかもかなり高く。
ちなみに書いたことある方法
MAC (陽解法)
Crank-Nicolson + Adams-Bashforth (半陰解法)
simple系とかでも完全な陰解法ではないのだよね。いろいろ、論文読んでみたけれども移流項にたいしても反復が必要みたいでかなり面倒くさい。しかも、生成されるマトリックスがCG系の方法で収束しない場合があるらしい。GMRES必須とか書いてあった。
作るのに半年ぐらいかかると思う。
2012/10/01
2012/09/29
2012/09/28
kindle paperwhiteを買った
アメリカにいる友人に協力してもらってkindle paper whiteを購入することにした。実はまだ本国でも販売はされていない。10月の頭に発送開始らしい。
人気があるようで、自分が頼んだ時には一ヶ月待ちだった。さらにそれを日本に送らなければいけないのでさらに日数がかかる。
日本での正式サービスを待った方がよかったかもしれない。
人気があるようで、自分が頼んだ時には一ヶ月待ちだった。さらにそれを日本に送らなければいけないのでさらに日数がかかる。
日本での正式サービスを待った方がよかったかもしれない。
2012/09/27
ロンドンに行ってきた
ロンドンの学会に行ってきた
3年前に卒業していらいイギリスには初めて行った。ロンドンは観光で2004年に行っただけだったのでいろいろ新鮮に感じられて楽しかった。(毎年ヒースローからパディントン駅までは通っていたが)
Les miserable見た
楽しかった。小学校の時の課外授業でみたのとは大違い。演奏まで生でやってた。
飯安い
パン 800g (一斤) 50円ぐらいから これでも昔より二倍ぐらい高い。
ホテル
安宿 一泊6000円ぐらい 何か東欧とかアラブ系か学生とかしかいないんですけど。
博物館とか
タダでは入れるとは
学会
oxford, cambridgeとかETH Zurich名門の所ばかりなんですけど。
アメリカに去年行ったときかなり聞き返され、やはり英語力が落ちたかと思ったがイギリスではまったく聞き返されることが無かった。自分のアクセントがかなり特化したものになってしまったようだ。
3年前に卒業していらいイギリスには初めて行った。ロンドンは観光で2004年に行っただけだったのでいろいろ新鮮に感じられて楽しかった。(毎年ヒースローからパディントン駅までは通っていたが)
Les miserable見た
楽しかった。小学校の時の課外授業でみたのとは大違い。演奏まで生でやってた。
飯安い
パン 800g (一斤) 50円ぐらいから これでも昔より二倍ぐらい高い。
ホテル
安宿 一泊6000円ぐらい 何か東欧とかアラブ系か学生とかしかいないんですけど。
博物館とか
タダでは入れるとは
学会
oxford, cambridgeとかETH Zurich名門の所ばかりなんですけど。
アメリカに去年行ったときかなり聞き返され、やはり英語力が落ちたかと思ったがイギリスではまったく聞き返されることが無かった。自分のアクセントがかなり特化したものになってしまったようだ。
2012/09/12
2012/09/11
gccをコンパイルした
gcc-4.7.1を作った。
AVXオプションが使えるんだよね。対応しているマシンないけど。
- 研究室のマシン コンパイル時間: 30分 'make -j13', 6コア乗ってるi7 型番は何だっけ?
- 自分のnetbook コンパイル時間: 5時間 'make -j3' AMD C-50
AVXオプションが使えるんだよね。対応しているマシンないけど。
2012/09/06
2012/08/22
ルーマニアでの邦人殺人事件
ルーマニアで女子大生のボランティアが殺害されたそうな。まだ若いのに。
思えば、自分も
- 基本一人で行動
- 空港で寝泊まりデフォ(深夜到着便)
- タクシー使わない
- 深夜二時とかに24時間スーパーまで徒歩でいく(一回二人組につけられたことがあった、結構怖かった)
2012/08/12
mpcがコンパイルできないよぅ
mpcのMakefileなんかへん。/usr/localにinstallしようとする。なぜだ?
--with-gmpをつかうとコンパイルできないし。root持ってないマシンで作りたいのだけれども。
2012/08/03
Regarding with nvcc
I have been testing nvcc and fortran comlipers. Around 2008 nvidia's presentation nvcc was explained to be designed compatible with gfortran. However, I found out gcc and gfortran can not be linked to nvcc created object code.
My mates told me that combinations of ifort and nvcc worked. Moreover, I confirmed pgcc and pgfortran as well. Which was no suprise.
2012/07/12
2012/07/10
同窓会
中学の同窓会がお盆のときにあるらしい。この年で学生しているなんて恥ずかしくていけない。facebookでページ作って30人ぐらい登録してあった。プチ同窓会を数ヶ月に一回ぐらいしているらしく写真とかも載っていた。みんな何となく面影はある、がもっと驚くのは地元にほとんどの人が留まっていること。やっぱり田舎の学校だ。
2012/06/27
2012/06/24
Open Foam 2.1.1をコンパイルした
/home/build で管理しているのでOpenfoam dirに展開する。ThirdPartyも同じところへ展開
aptで
- build-essential
- flex
- bison
- cmake
- zlib1g-dev
- qt4-dev-tools
- libqt4-dev
- gnuplot
- libreadline-dev
- libxt-dev
2012/06/20
2012/06/14
2012/06/06
今度はロンドンにいくことになった
五輪の後何だけれども、ロンドンにいくことになった。まさか講演になるとは思っていなかったのでビックリした。そしてその後はjornal paperの提出。これさえとおれば後は楽。
2012/06/01
中国行ってきた
中国行ってきた。
こんなに英語が通じない国だと思っていなかった。せめて空港とホテルの職員ぐらいは全員、片言でも話せる用にしようぜ。
一番通じたところが、パチもの市場、外人狙いなのかしょっちゅう話しかけてくる。しかも、空港職員より英語はうまい。
こんなに英語が通じない国だと思っていなかった。せめて空港とホテルの職員ぐらいは全員、片言でも話せる用にしようぜ。
一番通じたところが、パチもの市場、外人狙いなのかしょっちゅう話しかけてくる。しかも、空港職員より英語はうまい。
2012/05/23
2012/05/11
CG法 CUDA ソースコード
CG法のCUDAバージョンを作ってみた。blasを使用してます。
nvcc -lcublas cg_cuda.cu
でコンパイルしる!
cg_cuda
追記: 12 June 2012 URL間違えていた。修正した。
nvcc -lcublas cg_cuda.cu
でコンパイルしる!
cg_cuda
追記: 12 June 2012 URL間違えていた。修正した。
2012/05/08
2012/05/02
ubuntu 12.04 LTS (3)
サーバー版なら安定しているかな?と思って入れてみた。
鯖版は初めてだったので、デスクトップ版が以下に楽なのか分かった。まず、ネットにつながらない。インストール時につないでおけば自動でやってくれたらしいのだがつながなかった。
dhclientが動いてくれないので、/etc/network/interfacesを手動で書き換える。つながったら、ようやくaptが使えるので必要なソフトを入れていく。wirelessのドライバは入ったけれど起動するとやっぱり落ちる。ドライバ無でも同じ症状なので、他が問題っぽい。
wifconfigでも落ち、ログファイルも生成されないので原因究明できない。困った。
unityもgnomeも入れてないので快適。x windowだけっていうのもありかも。twmぐらいはいれようか?
鯖版は初めてだったので、デスクトップ版が以下に楽なのか分かった。まず、ネットにつながらない。インストール時につないでおけば自動でやってくれたらしいのだがつながなかった。
dhclientが動いてくれないので、/etc/network/interfacesを手動で書き換える。つながったら、ようやくaptが使えるので必要なソフトを入れていく。wirelessのドライバは入ったけれど起動するとやっぱり落ちる。ドライバ無でも同じ症状なので、他が問題っぽい。
wifconfigでも落ち、ログファイルも生成されないので原因究明できない。困った。
unityもgnomeも入れてないので快適。x windowだけっていうのもありかも。twmぐらいはいれようか?
CG法をGPU化してみた
CG法をGPU化してみた
5024x5024の三重対角行列をserialとCUDA化したCG法(共役勾配法)でといてみたよ
最適化オプションなしで、opteron 6128に対して約2百倍の高速化。
こんなに早いの?
普通に書いたのは8秒ぐらいかかった。CUDAのは0.04秒でといちゃった。
5024x5024の三重対角行列をserialとCUDA化したCG法(共役勾配法)でといてみたよ
最適化オプションなしで、opteron 6128に対して約2百倍の高速化。
こんなに早いの?
普通に書いたのは8秒ぐらいかかった。CUDAのは0.04秒でといちゃった。
2012/04/29
ubuntu 12.04 LTS (2)
ubuntu 12.04-desktop-amd64 の続き。
partitionをマニュアルで分割して、ネットワークなし、追加ソフトを初期インストール時に一切インストールしないを選んだらようやくインストールできた。
/dev/sda1 swap 4GB
/dev/sda2 ext4 残り
で切ってある。
無線LANのドライバー入れて起動するとハングする。もう他のOSに乗り換えよう。
partitionをマニュアルで分割して、ネットワークなし、追加ソフトを初期インストール時に一切インストールしないを選んだらようやくインストールできた。
/dev/sda1 swap 4GB
/dev/sda2 ext4 残り
で切ってある。
無線LANのドライバー入れて起動するとハングする。もう他のOSに乗り換えよう。
2012/04/28
Aspire One 522 (AMD C-50)
11:00ごろ Ubuntuをクリーンインストールし始める。メディアを焼く。ftp北陸先端大
11:30 インストーラ起動せず。ubuntu.jp 本家から落とした。md5sumで今度はチェックする。OK
12:30 一回目 インストーラが起動中に止まる。 長押しで強制終了。
12:35 二回目 インストール始まるが終了間際でインストールが止まる。dhclientが何か探しに入ってるんですけど?
1:10 三回目 ネットに接続しないで、後からapt-getでとってくればOK作戦 インストーラのエラーでらしい。エラーログ送ってくださいとののメッセージまで
1:21 眠くなる <- いまここ
11:00ごろ Ubuntuをクリーンインストールし始める。メディアを焼く。ftp北陸先端大
11:30 インストーラ起動せず。ubuntu.jp 本家から落とした。md5sumで今度はチェックする。OK
12:30 一回目 インストーラが起動中に止まる。 長押しで強制終了。
12:35 二回目 インストール始まるが終了間際でインストールが止まる。dhclientが何か探しに入ってるんですけど?
1:10 三回目 ネットに接続しないで、後からapt-getでとってくればOK作戦 インストーラのエラーでらしい。エラーログ送ってくださいとののメッセージまで
1:21 眠くなる <- いまここ
2012/04/27
Ubuntu 12.04 LTS
Ubuntu 12.04 LTS キター
ネットブックはアップデートしたら起動しなくなったのでクリーンインストールすることにした。 追記:mainマシンをアップデートしたらおかしくなった。マウスとキーボードの入力が一切できないんだけど。
ネットブックはアップデートしたら起動しなくなったのでクリーンインストールすることにした。 追記:mainマシンをアップデートしたらおかしくなった。マウスとキーボードの入力が一切できないんだけど。
2012/04/26
2012/04/25
2012/04/24
2012/04/20
Fortran と c
f90とcのミックスでコード書いているけど。今まで正式なやり方でやっていなかったのに昨日気がついた。
iso_c_biningと言うモジュールを使って、cの型指定をしてあげるのが本来の方法らしい。そういえば、変な誤差がでることがあったな。
iso_c_biningと言うモジュールを使って、cの型指定をしてあげるのが本来の方法らしい。そういえば、変な誤差がでることがあったな。
2012/04/19
2012/04/18
昔言われたことを思い返してみる
学部時代に良かったインド人に、'お前は日本人らしくない'散々言われた。
基本一人で行動していたし、だから誰かと、日本語で話したこともなかった。服装もいつも同じで、アジア系の食品とか売っているスーパーにいくこともなかった。
でも桜を見て、写真とか撮っていると、自分も日本人なんだと思う。
基本一人で行動していたし、だから誰かと、日本語で話したこともなかった。服装もいつも同じで、アジア系の食品とか売っているスーパーにいくこともなかった。
でも桜を見て、写真とか撮っていると、自分も日本人なんだと思う。
2012/04/17
2012/04/01
量子力学のシュミレーション
今日量子力学関係のシュミレーションをやっている人と話す機会があった。
なんでも物性系では、かなり誤差が大きくてもいいらしい。
例えば、実験で300度の計測結果が得られているのもでも、1000度ぐらいなら論文に載るレベルらしい。本当に数値計算で300度とかの値が得られれば、サイエンスとかネイチャーに載る快挙だそうな。そんな適当なんだ。
流体では離散化方法が違っても検証計算で10^{-3}ぐらいまであわないとダメなのに。
なんでも物性系では、かなり誤差が大きくてもいいらしい。
例えば、実験で300度の計測結果が得られているのもでも、1000度ぐらいなら論文に載るレベルらしい。本当に数値計算で300度とかの値が得られれば、サイエンスとかネイチャーに載る快挙だそうな。そんな適当なんだ。
流体では離散化方法が違っても検証計算で10^{-3}ぐらいまであわないとダメなのに。
2012/03/31
2012/03/29
pgiのコンパイラ
gccとgfortranで頑張ってきたけれど、GPU用にコンパイルする必要があった。
nvccとgfortranだとリンクできないので、pgiのコンパイラーにした。
が...今まで見たこともエラーがたくさんでている。cは全くでなかったが使用しているf90のソースコードので方言が多用されているらしい。ついてない
nvccとgfortranだとリンクできないので、pgiのコンパイラーにした。
が...今まで見たこともエラーがたくさんでている。cは全くでなかったが使用しているf90のソースコードので方言が多用されているらしい。ついてない
2012/03/28
GPBiCG ソルバー(2)
やっとバグがとれた。今度はちゃんと収束するようになったけど、bicgstabよりも誤差が大きいのが気になる。
残差のnorm、解のnormで収束判定するのかいつも悩む。大体は解の相対誤差で判定しているけれども、一つ余計にベクトルがひつようになる。残差と解のnormが厳密にリンクしてないスキームとかもあるらしいので、ソルバーの専門家出ないので怖くて手が出せない。 追記: ソースコードを公開しました。http://a-daily-life-in-the-office.blogspot.jp/2012/04/blog-post_26.html
残差のnorm、解のnormで収束判定するのかいつも悩む。大体は解の相対誤差で判定しているけれども、一つ余計にベクトルがひつようになる。残差と解のnormが厳密にリンクしてないスキームとかもあるらしいので、ソルバーの専門家出ないので怖くて手が出せない。 追記: ソースコードを公開しました。http://a-daily-life-in-the-office.blogspot.jp/2012/04/blog-post_26.html
2012/03/24
引き継がれているコードが
研究室で開発されたコードを使って研究してるんだけど、かなり怪しい部分があるのに気づいた。
本でチェックしたら、何か違うんですけど。検証結果とか残ってないのかな?
正直、直すの面倒くさい。
本でチェックしたら、何か違うんですけど。検証結果とか残ってないのかな?
正直、直すの面倒くさい。
2012/03/22
2012/03/02
GPBiCGソルバーを作ってみた
何か、かなり安定しないんですけど。BiCGStabで解ける行列も解けなかったりする。
追記: ソースコードを公開しました。http://a-daily-life-in-the-office.blogspot.jp/2012/04/blog-post_26.html
2012/02/23
paraviewのへんな仕様見つけた
connectivity
二次元では0から始めないとダメ
三次元では1からはじめないとダメ
三次元の書いた奴Fortran厨だろ
what's the hell is this?
If you writing paraview vtk output file, be careful for your connectivity table
-in 2D, the smallest node number must be zero
-in 3D, the smallest node number must be one
The 3d module is apparently written by Fortran lover.
二次元では0から始めないとダメ
三次元では1からはじめないとダメ
三次元の書いた奴Fortran厨だろ
what's the hell is this?
If you writing paraview vtk output file, be careful for your connectivity table
-in 2D, the smallest node number must be zero
-in 3D, the smallest node number must be one
The 3d module is apparently written by Fortran lover.
2012/02/19
2012/02/16
2012/02/09
2012/02/07
2012/02/02
amazonすげ
こんな大雪なのにもう注文した本が届きました。アマゾンの配送センター(大阪)からはどうやら一日で届くようです。東京方面からはけっこうかかるみたいね。
gccとsh-4のは結構あたりっぽい、パラパラ眺めてた、だけなので何とも言えない。
gccとsh-4のは結構あたりっぽい、パラパラ眺めてた、だけなので何とも言えない。
2012/02/01
amazon にて注文
この四冊を注文した。
みんな古本なので全部で2000円ぐらいだった。あとで感想とか書く。
実例で学ぶGCCの本格的活用法
正直オプション多くてわからないからこの際良く読んでおこうと思ってかった。
技術者のためのUnix系OS入門
NetBSDについて詳しく書いているらしいので隠れNetBSDユーザーとしては見過ごせなぜぃ!Linux/Unixを組み込み用に作るやり方なども乗ってるらしい。
SH-3 SH‐4プロセッサ入門
実は結構組み込み系も興味がある。今持ってる学位は機械工学だもんね。
画像&音声圧縮技術のすべて—インターネット/ディジタルテレビ/モバイル通信時代の必須技術
これ100円しなかった。何かついでに持ってるといいかもって感じで購入。
みんな古本なので全部で2000円ぐらいだった。あとで感想とか書く。
実例で学ぶGCCの本格的活用法
正直オプション多くてわからないからこの際良く読んでおこうと思ってかった。
技術者のためのUnix系OS入門
NetBSDについて詳しく書いているらしいので隠れNetBSDユーザーとしては見過ごせなぜぃ!Linux/Unixを組み込み用に作るやり方なども乗ってるらしい。
SH-3 SH‐4プロセッサ入門
実は結構組み込み系も興味がある。今持ってる学位は機械工学だもんね。
画像&音声圧縮技術のすべて—インターネット/ディジタルテレビ/モバイル通信時代の必須技術
これ100円しなかった。何かついでに持ってるといいかもって感じで購入。
2012/01/31
やっぱりC++の挙動はわからない
powerpcとx86の問題は解決しましたが、また問題が出てきた。
init()を作って値を初期化しているのですが、いざ初期化した配列を使おうとするとなぜかされていません。変だなと思ってアドレスで無理やりしていしてみましたが、同じアドレスなのに初期化した後も値が入っていな状態になっています。現在原因特定中。
init()を作って値を初期化しているのですが、いざ初期化した配列を使おうとするとなぜかされていません。変だなと思ってアドレスで無理やりしていしてみましたが、同じアドレスなのに初期化した後も値が入っていな状態になっています。現在原因特定中。
2012/01/28
2012/01/27
更新情報
ホームページ更新すた。みてけろ
前処理付きの安定化双共役勾配法、PBiCGStab ( preconditioned Bi-Conjugate Gradient Stabilised )を追加。一応OpenMPで並列化してある。カリカリにはチューニングしてないけどそれなりに早いはず。ソースコードもあるよ。
http://www.geocities.jp/yosuke_3141592/numerics/bicgstab.html
前処理付きの安定化双共役勾配法、PBiCGStab ( preconditioned Bi-Conjugate Gradient Stabilised )を追加。一応OpenMPで並列化してある。カリカリにはチューニングしてないけどそれなりに早いはず。ソースコードもあるよ。
http://www.geocities.jp/yosuke_3141592/numerics/bicgstab.html
2012/01/23
c++の挙動がよくわからない件について
メッシュデータを読み込ませるときにかなり不可解な挙動をしめす。
メッシュのノードの座標位置を読みたい時、個数が事前にわからないので二回読み込ませている。これをなぜか同じ一回目の読み込み関数から、二回目のファイルアクセスをとエラーになる
もちろん一回目のファイルアクセスのあとifstreamを閉じている。この問題は、関数を二つに分け、mainから呼んだら正常に動きました
あとこの情況で、なぜか新しくポインタをつくるだけ、alloactionもアクセスもしていない、でallocation errorになる。
x86では正常に動くけど、power系では動かないといった謎なコードになってしまった。
メッシュのノードの座標位置を読みたい時、個数が事前にわからないので二回読み込ませている。これをなぜか同じ一回目の読み込み関数から、二回目のファイルアクセスをとエラーになる
もちろん一回目のファイルアクセスのあとifstreamを閉じている。この問題は、関数を二つに分け、mainから呼んだら正常に動きました
あとこの情況で、なぜか新しくポインタをつくるだけ、alloactionもアクセスもしていない、でallocation errorになる。
x86では正常に動くけど、power系では動かないといった謎なコードになってしまった。
2012/01/21
2012/01/18
七重対角行列をBiCGStabでといてみた
画像のような七重対角行列をBiCGStab法で解いてみました
iteration = 0 residual = 0.838021
iteration=59
x=
-0.329031
-0.390997
-0.385867
-0.459732
-0.452909
-0.413003
-0.465395
-0.436181
-0.359735
-0.325728
-0.271722
-0.188105
-0.137904
-0.083966
-0.010057
0.031578
A*x =
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
11.000000
12.000000
13.000000
14.000000
15.000000
ちゃんと解けているようです。
2012/01/17
いぬ
実家に先日帰ったとき、新しい犬がいました。前の子は自分が下宿先に移った矢先に亡くなってしまいました。とても可愛かったのですが。
新しい娘もなんだか不憫です。どこかのブリーダーに育てられたらしいのですが、商品として不適格と判断されたらしく声帯を手術されたらしいのです。おかげで吠えても力のない声しか出ません。ブリーダーの方に室内でずっと買われていたらしいのですが..ちょっとかわいそう。
姿は、たしかに目が小さく本来の犬種のイメージとは少し違います。でも人間の都合で飼われたり手術されたりするのはかわいそうだと思う。
本人はいつも日向でのんびりしているけど、幸せなのだろうか?
新しい娘もなんだか不憫です。どこかのブリーダーに育てられたらしいのですが、商品として不適格と判断されたらしく声帯を手術されたらしいのです。おかげで吠えても力のない声しか出ません。ブリーダーの方に室内でずっと買われていたらしいのですが..ちょっとかわいそう。
姿は、たしかに目が小さく本来の犬種のイメージとは少し違います。でも人間の都合で飼われたり手術されたりするのはかわいそうだと思う。
本人はいつも日向でのんびりしているけど、幸せなのだろうか?
2012/01/11
GL/gl.h ヘッダーがないと言われる件
ubuntuのリポジトリに問題があるらしくなぜかmesa-dev-commonが取れない。dpkgでもやってみたけれど依存関係ではねられる。AMDのfirstream SDKのサンプルコンパイルに必要なのだが。ソース落として作るかな?
2012/01/10
高性能GPUが欲しい
GPGPUをやり始めたのだが、ちょっとした問題が発生している。
AMDのAPU搭載のマシンを持っているので、OpenCLでコーディングしているのですが、私のマシンでは倍精度の計算ができない様だ。困った。
倍精度計算可能なグラボは結構ハイエンドのものでなければならないらしいredeon 58xx,69xxとか79xxぐらいじゃないとサポートされてないらしい。
最新のグラボならば倍精度でも1TFLOPSぐらい出るらしい。ウチの学校のスパコンの中にはこれよりも性能低いのあるよ。とんでもない世の中だ。もちろん理論性能での話だけれどもね。
でもハイエンドは一番安くても15000円ぐらいするし、マザーボードも電源も買い換えなければならない。どう安く見積もっても結局三万円ぐらいかかる。
AMDのAPU搭載のマシンを持っているので、OpenCLでコーディングしているのですが、私のマシンでは倍精度の計算ができない様だ。困った。
倍精度計算可能なグラボは結構ハイエンドのものでなければならないらしいredeon 58xx,69xxとか79xxぐらいじゃないとサポートされてないらしい。
最新のグラボならば倍精度でも1TFLOPSぐらい出るらしい。ウチの学校のスパコンの中にはこれよりも性能低いのあるよ。とんでもない世の中だ。もちろん理論性能での話だけれどもね。
でもハイエンドは一番安くても15000円ぐらいするし、マザーボードも電源も買い換えなければならない。どう安く見積もっても結局三万円ぐらいかかる。
結婚式に行ってきた
妹が結婚したので式に出てきました。
思えば、昨年の11月ぐらいに母親から電話で’妹が結婚することになったので式に出ろ’と。
で急遽年末に変える予定を変更し、三連休中に地元に帰ってまいりました。高速バスだったので結構時間食って自由にくつろげたのは5時間ぐらいだったけど、たのしかった。 その時間のほとんどは犬に戯れてもらってた、手のかかる飼い主ですまん。
結婚した相手の人なのだが、家族の中で全く認識がなかったのは自分だけでした。どうやら自分は、謎の兄という扱いだったらしい。ずっと大学行っていて家にいなかったからね。人よさそうだし何より、リア充だった、よく妹とくっついたな。
新郎側のテーブル乗りのいい人ばっかりでめっちゃ盛り上がってたし。相手の親御さんとか新郎とか、感謝の言葉とかの涙ぐんでたし、なんか心こもってた。
それに比べウチは、
誰も泣かないし、感謝の言葉棒読み。
さずが我が父、母と妹、やるな。
思えば、昨年の11月ぐらいに母親から電話で’妹が結婚することになったので式に出ろ’と。
で急遽年末に変える予定を変更し、三連休中に地元に帰ってまいりました。高速バスだったので結構時間食って自由にくつろげたのは5時間ぐらいだったけど、たのしかった。 その時間のほとんどは犬に戯れてもらってた、手のかかる飼い主ですまん。
結婚した相手の人なのだが、家族の中で全く認識がなかったのは自分だけでした。どうやら自分は、謎の兄という扱いだったらしい。ずっと大学行っていて家にいなかったからね。人よさそうだし何より、リア充だった、よく妹とくっついたな。
新郎側のテーブル乗りのいい人ばっかりでめっちゃ盛り上がってたし。相手の親御さんとか新郎とか、感謝の言葉とかの涙ぐんでたし、なんか心こもってた。
それに比べウチは、
誰も泣かないし、感謝の言葉棒読み。
さずが我が父、母と妹、やるな。
2012/01/04
スキーム決定
年末年始パソコンには触らずにずっと本とにらめっこしてた。
分離型ではなくmatrix methodのSUPG/PSPG系のtetrahedron 4のコードにすることにした。実質GLSなのですが、まあ、こまけーことはいいんだよ。
ようやく積分の方法もわかったし。でもコード書くのものすごく大変そう。
分離型ではなくmatrix methodのSUPG/PSPG系のtetrahedron 4のコードにすることにした。実質GLSなのですが、まあ、こまけーことはいいんだよ。
ようやく積分の方法もわかったし。でもコード書くのものすごく大変そう。
登録:
投稿 (Atom)