diff --git a/src/multi_pipeline.cc b/src/multi_pipeline.cc
index 55d3435acadb2c2d6a19a7f9dbc9892c4527577f..2afc5802a9bf45cfcf5f6c636bb6c34158518dbf 100644
--- a/src/multi_pipeline.cc
+++ b/src/multi_pipeline.cc
@@ -8,6 +8,8 @@
 #include <boost/bind/bind.hpp>
 #include <boost/thread.hpp>
 
+#include "micron/nmc.h"
+#include "micron/nmc.hpp"
 #include "server.h"
 #include "tbb/task_group.h"
 #include "tbb/task_scheduler_init.h"
@@ -23,6 +25,21 @@ MultiPipeline::MultiPipeline(Config c)
     server_thread_ = boost::thread(boost::bind(&boost::asio::io_service::run, &io_service_));
   }
 
+  nmc_status_t default_status = NMC_NO_MEM;
+  Nmc default_nmc(&default_status);
+  if (default_status != 0) {
+    LOG(FATAL) << "Failed to allocate default NMC resources";
+  }
+
+  nmc_status_t nmc_status = NMC_NO_MEM;
+  NmcAttachProps nmc_properties;
+  Nmc prop_nmc(nmc_properties, &nmc_status);
+  if (nmc_status) {
+    LOG(FATAL) << "Failed to allocate NMC resources";
+  }
+  uint32_t transf_engine_thread_count = nmc_properties.getTeTotalThreadCount();
+  LOG(INFO) << "Number of TE threads: " << transf_engine_thread_count;
+
   MakePipelines();
 }