From 2ddd1cc28ee6e66898eb565301b3a32f11de28f6 Mon Sep 17 00:00:00 2001
From: John Romein <romein@astron.nl>
Date: Thu, 18 Dec 2008 08:41:50 +0000
Subject: [PATCH] bug 225: * Define HAVE_BGP_ION or HAVE_BGP_CN if appropriate.
 * Added FCNP test program.

---
 RTCP/FCNP/test/Makefile.am       | 21 ++++--------
 RTCP/FCNP/test/tBandwidth_cn.cc  | 50 +++++++++++++++++++++++++++
 RTCP/FCNP/test/tBandwidth_ion.cc | 58 ++++++++++++++++++++++++++++++++
 autoconf_share/variants.bgfen    |  6 ++--
 4 files changed, 118 insertions(+), 17 deletions(-)
 create mode 100644 RTCP/FCNP/test/tBandwidth_cn.cc
 create mode 100644 RTCP/FCNP/test/tBandwidth_ion.cc

diff --git a/RTCP/FCNP/test/Makefile.am b/RTCP/FCNP/test/Makefile.am
index 9a9193931f8..d94c4b83083 100644
--- a/RTCP/FCNP/test/Makefile.am
+++ b/RTCP/FCNP/test/Makefile.am
@@ -1,18 +1,11 @@
-check_PROGRAMS        = 
+check_PROGRAMS			= tBandwidth_cn tBandwidth_ion
 
-# programs to run through supplied checktools
-CHECKTOOLPROGS        = $(check_PROGRAMS)
-
-# scripts used to run tests
-TESTSCRIPTS           = 
-
-# scripts and possible programs to run tests
-TESTS	              = $(TESTSCRIPTS)
-
-XFAIL_TESTS           =
-
-# all files (.run, .stdout, .in, .log_prop, etc.) needed to run tests
-EXTRA_DIST            = $(TESTSCRIPTS)
+tBandwidth_cn_SOURCES		= tBandwidth_cn.cc
+tBandwidth_cn_LDADD		= ../src/libfcnp_cn.la
+tBandwidth_cn_DEPENDENCIES	= ../src/libfcnp_cn.la $(LOFAR_DEPEND)
 
+tBandwidth_ion_SOURCES		= tBandwidth_ion.cc
+tBandwidth_ion_LDADD		= ../src/libfcnp_ion.la
+tBandwidth_ion_DEPENDENCIES	= ../src/libfcnp_ion.la $(LOFAR_DEPEND)
 
 include $(top_srcdir)/Makefile.common
diff --git a/RTCP/FCNP/test/tBandwidth_cn.cc b/RTCP/FCNP/test/tBandwidth_cn.cc
new file mode 100644
index 00000000000..c0d6be5e84a
--- /dev/null
+++ b/RTCP/FCNP/test/tBandwidth_cn.cc
@@ -0,0 +1,50 @@
+#include <lofar_config.h>
+
+#if defined HAVE_BGP_CN
+
+#include <mpi.h>
+#include <iostream>
+
+#include <FCNP/fcnp_cn.h>
+
+
+static char largeBuffer[128 * 1024 * 1024] __attribute__((aligned(16)));
+
+int main(int argc, char **argv)
+{
+  std::vector<unsigned> psetDimensions(3);
+
+  psetDimensions[0] = 4;
+  psetDimensions[1] = 2;
+  psetDimensions[2] = 2;
+
+  int rank;
+
+  MPI_Init(&argc, &argv);
+  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+
+  FCNP_CN::init(psetDimensions);
+
+  if (rank == 0) {
+    for (size_t size = 16; size <= 128 * 1024 * 1024; size <<= 1)
+       for (unsigned i = 0; i < 16; i ++)
+	FCNP_CN::IONtoCN_ZeroCopy(largeBuffer, size);
+
+    for (size_t size = 16; size <= 128 * 1024 * 1024; size <<= 1)
+       for (unsigned i = 0; i < 16; i ++)
+	FCNP_CN::CNtoION_ZeroCopy(largeBuffer, size);
+  }
+
+  MPI_Finalize();
+
+  return 0;
+}
+
+#else
+
+int main()
+{
+  return 0;
+}
+
+#endif // defined HAVE_BGP_CN
diff --git a/RTCP/FCNP/test/tBandwidth_ion.cc b/RTCP/FCNP/test/tBandwidth_ion.cc
new file mode 100644
index 00000000000..0f489835791
--- /dev/null
+++ b/RTCP/FCNP/test/tBandwidth_ion.cc
@@ -0,0 +1,58 @@
+#include <lofar_config.h>
+
+#if defined HAVE_BGP_ION
+
+#include <iostream>
+#include <pthread.h>
+
+#include <bpcore/ppc450_inlines.h>
+
+#include <FCNP/fcnp_ion.h>
+
+
+static char largeBuffer[128 * 1024 * 1024] __attribute__((aligned(16)));
+
+
+int main(int argc, char **argv)
+{
+  memset(largeBuffer, 0, sizeof largeBuffer);
+
+  FCNP_ION::init(true);
+
+  for (size_t size = 16; size <= 128 * 1024 * 1024; size <<= 1) {
+    FCNP_ION::IONtoCN_ZeroCopy(0, largeBuffer, size);
+
+    unsigned long long start_time = _bgp_GetTimeBase();
+
+    for (unsigned i = 0; i < 15; i ++)
+      FCNP_ION::IONtoCN_ZeroCopy(0, largeBuffer, size);
+
+    unsigned long long stop_time = _bgp_GetTimeBase();
+    std::cout << "size = " << size << ": ION->CN = " << (15 * 8.0 * size / ((stop_time - start_time) / 850e6)) << std::endl;
+  }
+
+  for (size_t size = 16; size <= 128 * 1024 * 1024; size <<= 1) {
+    FCNP_ION::CNtoION_ZeroCopy(0, largeBuffer, size);
+
+    unsigned long long start_time = _bgp_GetTimeBase();
+
+    for (unsigned i = 0; i < 15; i ++)
+      FCNP_ION::CNtoION_ZeroCopy(0, largeBuffer, size);
+
+    unsigned long long stop_time = _bgp_GetTimeBase();
+    std::cout << "size = " << size << ": CN->ION = " << (15 * 8.0 * size / ((stop_time - start_time) / 850e6)) << std::endl;
+  }
+
+  FCNP_ION::end();
+
+  return 0;
+}
+
+#else
+
+int main()
+{
+  return 0;
+}
+
+#endif // defined HAVE_BGP_ION
diff --git a/autoconf_share/variants.bgfen b/autoconf_share/variants.bgfen
index 0b32c7d2c3c..04d8d2a5264 100644
--- a/autoconf_share/variants.bgfen
+++ b/autoconf_share/variants.bgfen
@@ -1,4 +1,4 @@
-gnu.compiler.conf:   CC=/usr/bin/gcc CXX=/usr/bin/g++ CCAS=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-gcc CCASFLAGS='-DHAVE_BGP' --with-cppflags='-DHAVE_BGP' --disable-lib64
+gnu.compiler.conf:   CC=/usr/bin/gcc CXX=/usr/bin/g++ CCAS=/usr/bin/gcc
 #gnu.compiler.conf:   CC=/usr/bin/gcc CXX=/usr/bin/g++ CCAS=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-gcc --disable-lib64
 #gnubgp.compiler.conf:   CC=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-gcc CXX=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-g++ CCAS=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-gcc CCASFLAGS='-DHAVE_BGP' --disable-lib64
 #gnubgp.compiler.conf:   CC=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-gcc CXX=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-gcc CCAS=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-gcc CCASFLAGS='-DHAVE_BGP' --disable-lib64
@@ -14,10 +14,10 @@ ion.variant.conf:       $(lofar_root) $(debugopt) $(threads) $(noshmem) $(ion_cp
 #bgp_ldd.var:            --with-ldflags='-L/bgsys/drivers/ppcfloor/comm/lib -L/bgsys/drivers/ppcfloor/runtime/SPI' --with-libs='-lcxxmpich.cnk -lmpich.cnk -ldcmfcoll.cnk -ldcmf.cnk -lpthread -lrt -lSPI.cna -lm'
 
 #cn_cpp.var:             --with-cppflags='-DHAVE_BGP -I/bgsys/drivers/ppcfloor/comm/include -I/bgsys/drivers/ppcfloor/arch/include -I/usr/include'
-cn_cpp.var:             --with-cppflags='-B/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin -DHAVE_BGP -I/bgsys/drivers/ppcfloor/comm/include -I/bgsys/drivers/ppcfloor/arch/include'
+cn_cpp.var:             --with-cppflags='-B/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin -DHAVE_BGP -DHAVE_BGP_CN -I/bgsys/drivers/ppcfloor/comm/include -I/bgsys/drivers/ppcfloor/arch/include'
 #cn_ldd.var:             --with-ldflags='-L/bgsys/drivers/ppcfloor/comm/lib -L/bgsys/drivers/ppcfloor/runtime/SPI -L/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/lib -L/usr/lib' --with-libs='-lcxxmpich.cnk -lmpich.cnk -ldcmfcoll.cnk -ldcmf.cnk -lpthread -lrt -lSPI.cna -lm'
 #cn_ldd.var:             --with-ldflags='-static -L/bgsys/drivers/ppcfloor/comm/lib -L/bgsys/drivers/ppcfloor/runtime/SPI -L/usr/lib' --with-libs='-lcxxmpich.cnk /bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/lib/libstdc++.a -lmpich.cnk -ldcmfcoll.cnk -ldcmf.cnk -lpthread -lrt -lSPI.cna -lm'
 cn_ldd.var:             --with-ldflags='-B/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin -L/bgsys/drivers/ppcfloor/comm/lib -L/bgsys/drivers/ppcfloor/runtime/SPI' --with-libs='-lcxxmpich.cnk -lmpich.cnk -ldcmfcoll.cnk -ldcmf.cnk -lpthread -lrt -lSPI.cna -lm'
 
-ion_cpp.var:             --with-cppflags='-B/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin -DHAVE_BGP -I/bgsys/drivers/ppcfloor/comm/include -I/bgsys/drivers/ppcfloor/arch/include'
+ion_cpp.var:             --with-cppflags='-B/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin -DHAVE_BGP -DHAVE_BGP_ION -I/bgsys/drivers/ppcfloor/comm/include -I/bgsys/drivers/ppcfloor/arch/include'
 ion_ldd.var:            --with-ldflags='-B/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin'
-- 
GitLab