modifications for version 4
authorAaron Becker <abecker3@illinois.edu>
Fri, 27 Apr 2007 04:39:18 +0000 (04:39 +0000)
committerAaron Becker <abecker3@illinois.edu>
Fri, 27 Apr 2007 04:39:18 +0000 (04:39 +0000)
src/libs/ck-libs/ParFUM-Tops/Makefile
src/libs/ck-libs/ParFUM-Tops/ParFUM_TOPS.cc
src/libs/ck-libs/ParFUM-Tops/ParFUM_TOPS.h
src/libs/ck-libs/ParFUM-Tops/ParFUM_TOPS_CUDA.h

index 077400b58dbdb02067e20354f3b1085857340957..4cbabdf1212264b4acec00aad91d54940b544182 100644 (file)
@@ -6,8 +6,8 @@ CHARMC=$(CDIR)/bin/charmc $(OPTS)
 #CUDAINC = -I$(CUDASDK)/common/inc -I$(CUDADIR)/include
 
 
-#CCFLAGS = -DFP_TYPE_FLOAT -g
-CCFLAGS = -g
+CCFLAGS = -DFP_TYPE_FLOAT -O
+#CCFLAGS = -g
 #CCFLAGS = -O
 
 
index 6c5d02ed0ae23e833176f6dfc34d69d3494ff885..79d41a215c85a8de7cd793f7fe06df0044d45b06 100644 (file)
@@ -29,6 +29,7 @@ void setTableReferences(TopModel* model){
   model->elem_id_T = &((FEM_DataAttribute*)model->mesh->elem[0].lookup(FEM_DATA+1,""))->getInt();
   model->ElemData_T = &((FEM_DataAttribute*)model->mesh->elem[0].lookup(FEM_DATA+0,""))->getChar();
   model->NodeData_T = &((FEM_DataAttribute*)model->mesh->node.lookup(FEM_DATA+0,""))->getChar();
+  model->n2eConn_T = &((FEM_DataAttribute*)model->mesh->elem[0].lookup(FEM_DATA+2,""))->getInt();
 
 #ifdef FP_TYPE_FLOAT
   model->coord_T = &((FEM_DataAttribute*)model->mesh->node.lookup(FEM_DATA+2,""))->getFloat();
@@ -36,9 +37,6 @@ void setTableReferences(TopModel* model){
   model->coord_T = &((FEM_DataAttribute*)model->mesh->node.lookup(FEM_DATA+2,""))->getDouble();
 #endif
 
-#ifdef CUDA
-  model->n2eConn_T = &((FEM_DataAttribute*)model->mesh->elem[0].lookup(FEM_DATA+2,""))->getInt();
-#endif
 
 }
 
@@ -121,14 +119,6 @@ TopModel* topModel_Create_Driver(int elem_attr_sz, int node_attr_sz, int model_a
 
     setTableReferences(model);
 
-#if CUDA
-    /** copy number/sizes of nodes and elements to device structure */
-    model->device_model.elem_attr_size = elem_attr_sz;
-    model->device_model.node_attr_size = node_attr_sz;
-    model->device_model.model_attr_size = model_attr_sz;
-    model->device_model.num_local_node = model->num_local_node;
-    model->device_model.num_local_elem = model->num_local_elem;
-
 
     /** Create n2e connectivity array and copy to device global memory */
     {
@@ -168,13 +158,28 @@ TopModel* topModel_Create_Driver(int elem_attr_sz, int node_attr_sz, int model_a
         //    if ((i+1)%4 == 0) printf("\n");
         //}
 
+#if CUDA
         size = model->num_local_elem * 4 *sizeof(int);
         cudaMalloc((void**)&(model->device_model.n2eConnDevice), size);
         cudaMemcpy(model->device_model.n2eConnDevice,n2eTable,size,
                 cudaMemcpyHostToDevice);
+#endif
 
     }
 
+
+
+
+#if CUDA
+    /** copy number/sizes of nodes and elements to device structure */
+    model->device_model.elem_attr_size = elem_attr_sz;
+    model->device_model.node_attr_size = node_attr_sz;
+    model->device_model.model_attr_size = model_attr_sz;
+    model->device_model.num_local_node = model->num_local_node;
+    model->device_model.num_local_elem = model->num_local_elem;
+
+
+
     /** Copy element Attribute array to device global memory */
     {
         FEM_DataAttribute * at = (FEM_DataAttribute*) model->mesh->elem[0].lookup(FEM_DATA+0,"topModel_Create_Driver");
@@ -468,10 +473,10 @@ void topModel_TestIterators(TopModel*m){
 
   TopElemItr* e_itr = topModel_CreateElemItr(m);
   for(topElemItr_Begin(e_itr);topElemItr_IsValid(e_itr);topElemItr_Next(e_itr)){
-       iterated_elem_count++;
-       TopElement elem = topElemItr_GetCurr(e_itr);
-       void* ea = topElement_GetAttrib(m,elem);
-       CkAssert(ea != NULL);
+      iterated_elem_count++;
+      TopElement elem = topElemItr_GetCurr(e_itr);
+      void* ea = topElement_GetAttrib(m,elem);
+      CkAssert(ea != NULL);
   }
 
   CkAssert(iterated_node_count == expected_node_count);
index 753a8755bf0b1399c2624d7122b991a1c8e8e9f0..6681f1ecf84e904125ae797906b6222bbb9ee819 100644 (file)
@@ -35,6 +35,7 @@ typedef struct{
     AllocTable2d<FP_TYPE_LOW> *coord_T;
     AllocTable2d<int> *node_id_T;
     AllocTable2d<int> *elem_id_T;
+    AllocTable2d<int> *n2eConn_T;
 
 
     unsigned node_attr_size;
@@ -48,7 +49,6 @@ typedef struct{
 
 #ifdef CUDA
     TopModelDevice device_model;
-  AllocTable2d<int> *n2eConn_T;
 #endif
 
 } TopModel;
@@ -173,7 +173,6 @@ void topModel_TestIterators(TopModel*m);
 
 void top_retrieve_elem_data(TopModel* m);
 void top_retrieve_node_data(TopModel* m);
-
 void top_put_node_data(TopModel* m);
 
 #endif
index a3e4f948b01d2e72ce4830ee63b46bfee6852161..23e4a9e0eb84b5f5e2f4a9f3081cd676e521b778 100644 (file)
 
 #ifndef __PARFUM_TOPS_CUDA___H
 #define __PARFUM_TOPS_CUDA___H
-#ifdef CUDA
 
 #include "ParFUM_TOPS_Types.h"
+
+
+#ifdef CUDA
+
 #include <cutil.h>
 
 /** A TopModelDevice contains structures for use by CUDA kernels */