Changes between Version 1 and Version 2 of CALプログラミング(4)


Ignore:
Timestamp:
Mar 22, 2009 3:43:13 AM (16 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CALプログラミング(4)

    v1 v2  
    22 * ここまでの説明を理解することで、最もシンプルなN体計算プログラムを作成できるはずである。 
    33 
    4  * 具体的にはGRAPEなどと同じように、ホストから粒子の位置と質量をGPUに送り、GPU上で全粒子間で互いに及ぼし合う力を足しあわせて、結果として加速度を得るようなプログラムである。粒子間に働く力がニュートン重力の場合は、 
     4 * 具体的にはGRAPEなどと同じように、ホストから粒子の位置と質量をGPUに送り、GPU上で全粒子間で互いに及ぼし合う力を足しあわせて、結果として加速度を得るようなプログラムである。粒子間に働く力がニュートン重力の場合は、CAL200808.pdfで説明したIL kernelプログラムとなる。ループの部分のみを再掲すると、以下のようなものである。 
     5{{{ 
     6whileloop  
     7  ige r88.x___, r100.x, r77.x  
     8  break_logicalnz r88.x  
     9  sample_resource(0)_sampler(0) r0, r2  
     10  sub r5.xyz, r0.xyz, r4.xyz            
     11  dp4 r6, r5, r5  
     12  rsq r7, r6  
     13  mul r8, r7, r7.xyz1   
     14  mul r8, r8, r7.xyz1   
     15  mul r9, r8, r5.xyz1  
     16  mad r3, r9, r0.w, r3  
     17  add r2.x___, r2.x, l1.x  
     18  iadd r100.x___, r100.x, l0.z  
     19  umod r101.x, r100.x, r77.y  
     20  if_logicalz r101.x  
     21  add r2.0y, r2.0y, l1.x  
     22  endif  
     23endloop  
     24}}} 
     25 
     26 *