资源算法SKA-gpu-degrid

SKA-gpu-degrid

2019-12-24 | |  56 |   0 |   0

GPUDegrid

Radio astronomy degridding on the GPU. Not optimized.

Invoke "make" to make and "degrid" to run.

===Make options in brief===

  • PRECISION (float/double) specifies the precision. Default is double

  • MANAGED (1 to enable) uses managed memory. Default is off

  • CPU_CHECK (1 to enable) computes on both CPU and GPU and checks results

  • SCATTER (1 to enable) computes with 1 image point per thread. Default is 1 visibility per 32 threads. Details below

  • DEBUG (1 to enable) compiles with debug flags for GPU and CPU. Also enables CPU_CHECK

  • MOVING_WINDOW (1 to enable) similar to gather implementation only a window around the visibility moves as the visbility positions do. Similar to John Romein's gridding code

  • COMPUTE_GCF (1 to enable) compute the GCF in the kernel rather than reading from memory

===Make option details=== Specify PRECISION on the make line to switch between double and single precision, i.e. %> make PRECISION=float

To use unified virtual memory, add MANAGED=1 to the build line

%> make PRECISION=float MANAGED=1

To check results against a CPU computation, add CPU_CHECK=1 to your make line

%> make PRECISION=float MANAGED=1 CPU_CHECK=1

You can any either of 3 methods to compute. By default, each visibility is computed by a set of 32 consecutive threads. This method currently gives the best performance. A second method assigns each thread to a single point on the image and pushes data to each visibility. There is cooperation between threads in a threadblock. Multiple threadblocks contribute to the same visibilty via an atomic addition. To enable this alternate method, call make with SCATTER=1. For example,

%> make PRECISION=float MANAGED=1 CPU_CHECK=1 SCATTER=1

The third method is quite similar to the gather except that each thread camps on a few image points on a grid of the same dimension as the GCF. As the visibilities move in the image plane, threads leap to the next point on their grid as they fall out of the window around the visibility. This implementation is inspired by John Romein's gridding code and is quite similar. To use this method, added MOVING_WINDOW=1 to the build command:

%> make PRECISION=float MANAGED=1 CPU_CHECK=1 MOVING_WINDOW=1

If you specify COMPUTE_GCF=1, the GCF will not be loaded from memory. Instead, the first value of gcf[] will be read as (T,w) with T and w used to compute gcf(x,y) via

gcf(x,y) = exp(2pijw(1-T*sqrt(x2+y2)))

where x,y is the distance from the image point to the visibility. This is for exploration purposes only. The values do not match the results in crocodile or the randomly generated gcf in degrid.cu.


上一篇:tegra-uboot-scripts

下一篇:SKA-gpu-stefcal

用户评价
全部评价

热门资源

  • Keras-ResNeXt

    Keras ResNeXt Implementation of ResNeXt models...

  • seetafaceJNI

    项目介绍 基于中科院seetaface2进行封装的JAVA...

  • spark-corenlp

    This package wraps Stanford CoreNLP annotators ...

  • capsnet-with-caps...

    CapsNet with capsule-wise convolution Project ...

  • inferno-boilerplate

    This is a very basic boilerplate example for pe...