示例#1
0
        public void Kernel(deviceptr <float4> pos, float time)
        {
            var x = blockIdx.x * blockDim.x + threadIdx.x;
            var y = blockIdx.y * blockDim.y + threadIdx.y;

            var u = ((float)x) / ((float)Width);
            var v = ((float)y) / ((float)Height);

            u = u * 2.0f - 1.0f;
            v = v * 2.0f - 1.0f;

            const float freq = 4.0f;
            var         w    = LibDevice.__nv_sinf(u * freq + time) * LibDevice.__nv_cosf(v * freq + time) * 0.5f;

            pos[y * Width + x] = new float4(u, w, v, LibDevice.__nv_uint_as_float(0xff00ff00));
        }
示例#2
0
        //[/commonPerfTester]


        //[bodyBodyInteraction]
        public static float3 BodyBodyInteraction(float softeningSquared, float3 ai, float4 bi, float4 bj)
        {
            // r_ij  [3 FLOPS]
            var r = new float3(bj.x - bi.x, bj.y - bi.y, bj.z - bi.z);

            // distSqr = dot(r_ij, r_ij) + EPS^2  [6 FLOPS]
            var distSqr = r.x * r.x + r.y * r.y + r.z * r.z + softeningSquared;

            // invDistCube =1/distSqr^(3/2)  [4 FLOPS (2 mul, 1 sqrt, 1 inv)]
            var invDist     = LibDevice.__nv_rsqrtf(distSqr);
            var invDistCube = invDist * invDist * invDist;

            // s = m_j * invDistCube [1 FLOP]
            var s = bj.w * invDistCube;

            // a_i =  a_i + s * r_ij [6 FLOPS]
            return(new float3(ai.x + r.x * s, ai.y + r.y * s, ai.z + r.z * s));
        }
示例#3
0
文件: Program.cs 项目: m4rs-mt/ILGPU
 /// <summary>
 /// A custom kernel using LibDevice functions.
 /// </summary>
 public static void KernelWithLibDevice(Index1D index, ArrayView <float> data)
 {
     data[index] = LibDevice.Cos(index);
 }
示例#4
0
 private static Real MaskCuda(Real value)
 {
     return(LibDevice.__nv_isfinited(value) != 0 ? value : 0);
 }