Commit 704fabf8 authored by rallenblack's avatar rallenblack
Browse files

Modified pfb correlator thread to match PFB thread. Also added conditional...

Modified pfb correlator thread to match PFB thread. Also added conditional path setting to install script and CUDA path setting
parent 7569c23b
Showing with 59 additions and 24 deletions
+59 -24
......@@ -9,7 +9,34 @@ else
fi
# Change this to match your destination directory
prefix=~/hash
prefix=$HOME/hash
# Add prefix to PATH
if [[ "$PATH" == ?(*:)"$prefix/bin"?(:*) ]]
then
echo "PATH includes $prefix/bin"
else
echo "PATH does not include $prefix/bin... Adding now"
export PATH=$prefix/bin:$PATH
fi
# Add prefix to LD_LIBRARY_PATH
if [[ "$LD_LIBRARY_PATH" == ?(*:)"$prefix/lib"?(:*) ]]
then
echo "LD_LIBRARY_PATH includes $prefix/lib"
else
echo "LD_LIBRARY_PATH does not include $prefix/lib... Adding now"
export LD_LIBRARY_PATH=$prefix/lib:$LD_LIBRARY_PATH
fi
# Check for CUDA
if [ -z "$CUDA" ]
then
echo "CUDA is not set-- using $prefix/cuda"
CUDA=$prefix/cuda
else
echo "CUDA is set to $CUDA"
fi
# Set library source directories
HASHPIPE_SRC=$FLAG_DIR/lib/hashpipe/src
......@@ -25,6 +52,7 @@ echo "Navigating to $HASHPIPE_SRC"
cd $HASHPIPE_SRC
autoreconf -is
./configure --prefix=$prefix --silent
make clean
make
make install
echo "========================================"
......@@ -35,6 +63,7 @@ echo "Installing xGPU"
echo "========================================"
echo "Navigating to $XGPU_SRC"
cd $XGPU_SRC
make clean
make
make install prefix=$prefix
echo "========================================"
......@@ -45,6 +74,7 @@ echo "Installing flagbeamformer"
echo "========================================"
echo "Navigating to $BEAM_SRC"
cd $BEAM_SRC
make clean
make
make install prefix=$prefix
echo "========================================"
......@@ -55,6 +85,7 @@ echo "Installing flagPower"
echo "========================================"
echo "Navigating to $POWER_SRC"
cd $POWER_SRC
make clean
make
make install prefix=$prefix
echo "========================================"
......@@ -65,8 +96,9 @@ echo "Installing flagpfb"
echo "========================================"
echo "Navigating to $PFB_SRC"
cd $PFB_SRC
make
make install prefix=$prefix
make clean
make CUDA_DIR=$CUDA
make install prefix=$prefix CUDA_DIR=$CUDA
echo "========================================"
echo
......@@ -77,10 +109,13 @@ echo "Navigating to $FLAG_DIR/src"
cd $FLAG_DIR/src
autoreconf -is
./configure --prefix=$prefix --with-hashpipe=$prefix --with-xgpu=$prefix --with-xgpufrb=$prefix --with-xgpupfb=$prefix --with-flagpfb=$prefix --with-flagbeamformer=$prefix --with-flagpower=$prefix --silent
make clean
make
make install
echo "========================================"
echo
cd $FLAG_DIR
echo "DONE!"
echo "The FLAG plugins have been installed to $prefix"
......@@ -61,14 +61,14 @@ flag_x_frb_threads = flag_net_thread.c \
flag_frb_correlator_thread.c \
flag_frb_corsave_thread.c
#flag_fx_threads = flag_net_thread.c \
# flag_transpose_thread.c \
# flag_pfb_thread.c \
# flag_pfb_correlator_thread.c \
# flag_pfb_corsave_thread.c
flag_fx_threads = flag_net_thread.c \
flag_transpose_thread.c \
flag_pfb_thread.c \
flag_pfb_correlator_thread.c \
flag_pfb_corsave_thread.c
# This lists all of the plugins that will be created
lib_LTLIBRARIES = flag_x.la flag_b.la flag_f.la flag_x_frb.la flag_bx.la
lib_LTLIBRARIES = flag_x.la flag_b.la flag_f.la flag_x_frb.la flag_bx.la flag_fx.la
# flag_x.la sources and libraries
flag_x_la_SOURCES = $(flag_databuf) $(flag_x_threads) $(fifo_codes)
......@@ -109,12 +109,12 @@ flag_x_frb_la_LDFLAGS += -L"@XGPU_FRB_LIBDIR@" -Wl,-rpath,"@XGPU_FRB_LIBDIR@"
flag_x_frb_la_LDFLAGS += -L"@HASHPIPE_LIBDIR@" -Wl,-rpath,"@HASHPIPE_LIBDIR@"
# flag_fx.la sources and libraries
#flag_fx_la_SOURCES = $(flag_databuf) $(flag_fx_threads) $(fifo_codes)
#flag_fx_la_LIBADD = -lrt -lxgpupfb -lcublas -L/usr/local/cuda/lib64 -lcfitsio -lflagpfb -lcufft -lcudart
#flag_fx_la_LDFLAGS = -avoid-version -module -shared -export-dynamic --enable-shared
#flag_fx_la_LDFLAGS += -L"@XGPU_PFB_LIBDIR@" -Wl,-rpath,"@XGPU_PFB_LIBDIR@"
#flag_fx_la_LDFLAGS += -L"@HASHPIPE_LIBDIR@" -Wl,-rpath,"@HASHPIPE_LIBDIR@"
#flag_fx_la_LDFLAGS += -L"@FLAGPFB_LIBDIR@" -Wl, -rpath,"@FLAGPFB_LIBDIR@"
flag_fx_la_SOURCES = $(flag_databuf) $(flag_fx_threads) $(fifo_codes)
flag_fx_la_LIBADD = -lrt -lxgpupfb -lcublas -L/usr/local/cuda/lib64 -lcfitsio -lflagpfb -lcufft -lcudart
flag_fx_la_LDFLAGS = -avoid-version -module -shared -export-dynamic --enable-shared
flag_fx_la_LDFLAGS += -L"@XGPU_PFB_LIBDIR@" -Wl,-rpath,"@XGPU_PFB_LIBDIR@"
flag_fx_la_LDFLAGS += -L"@HASHPIPE_LIBDIR@" -Wl,-rpath,"@HASHPIPE_LIBDIR@"
flag_fx_la_LDFLAGS += -L"@FLAGPFB_LIBDIR@" -Wl, -rpath,"@FLAGPFB_LIBDIR@"
# Installed scripts
......
......@@ -31,7 +31,7 @@ typedef enum {
// (2b) Print out some data in the block
static void * run(hashpipe_thread_args_t * args) {
// Local aliases to shorten access to args fields
flag_pfb_gpu_input_databuf_t * db_in = (flag_pfb_gpu_input_databuf_t *)args->ibuf;
flag_gpu_pfb_output_databuf_t * db_in = (flag_gpu_pfb_output_databuf_t *)args->ibuf;
flag_pfb_gpu_correlator_output_databuf_t * db_out = (flag_pfb_gpu_correlator_output_databuf_t *)args->obuf;
hashpipe_status_t st = args->st;
const char * status_key = args->thread_desc->skey;
......@@ -62,7 +62,7 @@ static void * run(hashpipe_thread_args_t * args) {
context.array_h = (ComplexInput *)db_in->block[0].data;
context.matrix_h = (Complex *)db_out->block[0].data;
context.array_len = (db_in->header.n_block * sizeof(flag_pfb_gpu_input_block_t) - sizeof(flag_gpu_input_header_t))/sizeof(ComplexInput);
context.array_len = (db_in->header.n_block * sizeof(flag_gpu_pfb_output_block_t) - sizeof(flag_gpu_input_header_t))/sizeof(ComplexInput);
context.matrix_len = (db_out->header.n_block * sizeof(flag_pfb_gpu_correlator_output_block_t) - sizeof(flag_gpu_output_header_t))/sizeof(Complex);
int xgpu_error = xgpuInit(&context, gpu_dev);
......@@ -75,7 +75,7 @@ static void * run(hashpipe_thread_args_t * args) {
printf("XGPU CONTEXT\n");
printf("############################################################\n");
printf("header.n_block = %lld\n", (long long int)(db_in->header.n_block));
printf("sizeof(flag_pfb_gpu_input_block_t) = %lld\n", (long long int)(sizeof(flag_pfb_gpu_input_block_t)));
printf("sizeof(flag_gpu_pfb_output_block_t) = %lld\n", (long long int)(sizeof(flag_gpu_pfb_output_block_t)));
printf("sizeof(flag_gpu_input_header_t) = %lld\n", (long long int)(sizeof(flag_gpu_input_header_t)));
printf("sizeof(flag_pfb_gpu_correlator_output_block_t) = %d\n", (int)(sizeof(flag_pfb_gpu_correlator_output_block_t)));
printf("sizeof(flag_gpu_output_header_t) = %lld\n", (long long int)(sizeof(flag_gpu_output_header_t)));
......@@ -114,7 +114,7 @@ static void * run(hashpipe_thread_args_t * args) {
if (cur_state == ACQUIRE) {
next_state = ACQUIRE;
// Wait for input buffer block to be filled
while ((rv=flag_pfb_gpu_input_databuf_wait_filled(db_in, curblock_in)) != HASHPIPE_OK) {
while ((rv=flag_gpu_pfb_output_databuf_wait_filled(db_in, curblock_in)) != HASHPIPE_OK) {
if (rv==HASHPIPE_TIMEOUT) {
int cleanb;
hashpipe_status_lock_safe(&st);
......@@ -154,7 +154,7 @@ static void * run(hashpipe_thread_args_t * args) {
#if VERBOSE==1
fprintf(stderr, "COR: Correlator is off...\n");
#endif
flag_pfb_gpu_input_databuf_set_free(db_in, curblock_in);
flag_gpu_pfb_output_databuf_set_free(db_in, curblock_in);
curblock_in = (curblock_in + 1) % db_in->header.n_block;
good_data = 1;
continue;
......@@ -179,7 +179,7 @@ static void * run(hashpipe_thread_args_t * args) {
// starting mcnt not yet reached
// free block and continue
flag_pfb_gpu_input_databuf_set_free(db_in, curblock_in);
flag_gpu_pfb_output_databuf_set_free(db_in, curblock_in);
curblock_in = (curblock_in + 1) % db_in->header.n_block;
continue;
}
......@@ -221,7 +221,7 @@ static void * run(hashpipe_thread_args_t * args) {
// If we get here, then integ_status == "on"
// Setup for current chunk
context.input_offset = curblock_in * sizeof(flag_pfb_gpu_input_block_t) / sizeof(ComplexInput);
context.input_offset = curblock_in * sizeof(flag_gpu_pfb_output_block_t) / sizeof(ComplexInput);
context.output_offset = curblock_out * sizeof(flag_pfb_gpu_correlator_output_block_t) / sizeof(Complex);
int doDump = 0;
......@@ -287,7 +287,7 @@ static void * run(hashpipe_thread_args_t * args) {
#if VERBOSE==1
printf("COR: Marking input block %d as free\n", curblock_in);
#endif
flag_pfb_gpu_input_databuf_set_free(db_in, curblock_in);
flag_gpu_pfb_output_databuf_set_free(db_in, curblock_in);
curblock_in = (curblock_in + 1) % db_in->header.n_block;
}
}
......@@ -334,7 +334,7 @@ static hashpipe_thread_desc_t x_thread = {
skey: "CORSTAT",
init: NULL,
run: run,
ibuf_desc: {flag_pfb_gpu_input_databuf_create},
ibuf_desc: {flag_gpu_pfb_output_databuf_create},
obuf_desc: {flag_pfb_gpu_correlator_output_databuf_create}
};
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment