Modifications to get running on lincoln.
authorIsaac Dooley <idooley2@illinois.edu>
Fri, 6 Mar 2009 22:04:39 +0000 (22:04 +0000)
committerIsaac Dooley <idooley2@illinois.edu>
Fri, 6 Mar 2009 22:04:39 +0000 (22:04 +0000)
src/libs/ck-libs/ParFUM-Tops/Makefile
src/libs/ck-libs/ParFUM-Tops/Makefile-CUDA
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
src/libs/ck-libs/ParFUM-Tops/ParFUM_TOPS_Iterators.cc
src/libs/ck-libs/ParFUM-Tops/ParFUM_TOPS_Types.h

index c782447cdb556fe57890c21f9920a8856788ac87..25146e2cb6a17368812a74a3c78c0317d89148db 100644 (file)
@@ -6,7 +6,7 @@ CHARMC=$(CDIR)/bin/charmc $(OPTS)
 #CUDAINC = -I$(CUDASDK)/common/inc -I$(CUDADIR)/include
 
 
-CCFLAGS = -DFP_TYPE_DOUBLE -g
+CCFLAGS = -DFP_TYPE_FLOAT -g
 #CCFLAGS = -g
 #CCFLAGS = -O
 
index ead707ad8abde6478ab0099c48657801f170466c..dfdaae1dddd1f84ad00447afc12ef34532904406 100644 (file)
@@ -1,5 +1,5 @@
 CDIR=../../../..
-CHARMC=$(CDIR)/bin/charmc -cc $(CUDAC) -c++ $(CUDAC) $(OPTS)
+CHARMC=$(CDIR)/bin/charmc -cc $(CUDAC) -c++ $(CUDAC) $(OPTS) -nobs
 CUDADIR = /usr/local/cuda
 CUDASDK = $(HOME)/NVIDIA_CUDA_SDK
 CUDAC = $(CUDADIR)/bin/nvcc 
index b0de8a7dbb4e8b31b6579184929fabd9d26012d2..b7469304d03a157f49e770dc3601306601492364 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "ParFUM_TOPS.h"
 #include "ParFUM.decl.h"
+#include "ParFUM.h"
 #include "ParFUM_internals.h"
 #ifdef CUDA
     #include <cuda.h>
@@ -79,7 +80,7 @@ void fillIDHash(TopModel* model)
 }
 
 /** Create a model  before partitioning. Given the number of nodes per element */
-TopModel* topModel_Create_Init(int nelnode){
+TopModel* topModel_Create_Init(){
   TopModel* model = new TopModel;
   memset(model, 0, sizeof(TopModel));
   
@@ -348,6 +349,7 @@ TopNode topModel_InsertNode(TopModel* m, double x, double y, double z){
   (*m->coord_T)(newNode,0)=x;
   (*m->coord_T)(newNode,1)=y;
   (*m->coord_T)(newNode,2)=z;
+  setTableReferences(m);
   return newNode;
 }
 
@@ -356,6 +358,7 @@ TopNode topModel_InsertNode(TopModel* m, float x, float y, float z){
   (*m->coord_T)(newNode,0)=x;
   (*m->coord_T)(newNode,1)=y;
   (*m->coord_T)(newNode,2)=z;
+  setTableReferences(m);
   return newNode;
 }
 
@@ -399,7 +402,8 @@ TopElement topModel_InsertElem(TopModel*m, TopElemType type, TopNode* nodes){
           newEl.id = FEM_add_element_local(m->mesh, conn, 10, type, 0, 0);  
   } 
  
-         return newEl; 
+  setTableReferences(m);
+        return newEl; 
 }
 
 /** Set id of an element
index 09441b356bae098c266a708831f9869cac358966..dd3868999f90939bb2b50069009d6c860fc26654 100644 (file)
@@ -116,7 +116,7 @@ int tops_lib_FP_Type_Size();
 Create and access a Tops model. Only call from Init
 Currently only one model can be created. To extend, each model must just reference a different FEM_Mesh object
 */
-TopModel* topModel_Create_Init(int nelnode);
+TopModel* topModel_Create_Init();
 
 /** Create and access a Tops model. Only call from Driver */
 TopModel* topModel_Create_Driver(int elem_attr_sz, int node_attr_sz, int model_attr_sz, void* mAtt);
index 23e4a9e0eb84b5f5e2f4a9f3081cd676e521b778..8b7c2a1131669f11d1d11bd436c4eea9deaa55ff 100644 (file)
@@ -1,3 +1,4 @@
+
 /**
    @file
    @brief A ParFUM "Tops" compatibility layer API Definition
@@ -16,7 +17,7 @@
 
 #ifdef CUDA
 
-#include <cutil.h>
+/** #include <cutil.h> */
 
 /** A TopModelDevice contains structures for use by CUDA kernels */
 typedef struct {
@@ -38,7 +39,7 @@ typedef struct {
 
 #define topElement_D_GetAttrib(m, e) (((char*)(m)->ElemDataDevice) + (e)*(m)->elem_attr_size)
 
-#define topNode_D_GetAttrib(m, e) (((char*)(m)->NodeDataDevice) + (e)*(m)->node_attr_size)
+#define topNode_D_GetAttrib(m, n) (((char*)(m)->NodeDataDevice) + (n)*(m)->node_attr_size)
 
 #define topElement_D_GetNode(m, e, idx) (((m)->ElemConnDevice)[e*4 + idx])
 
index 86b87ba697d0ae7c2cd8253f4720d90fac52f68a..75306e31c34b75811f5c3ba6665553c301beaaae 100644 (file)
@@ -186,7 +186,7 @@ TopElement topNodeElemItr_GetCurr (TopNodeElemItr* itr){
        CkAssert(topNodeElemItr_IsValid(itr));
        TopElement e;
        // TODO Make this a const reference
-       FEM_VarIndexAttribute::ID elem = itr->model->mesh->n2e_getElem(itr->node, itr->current_index);
+       ElemID elem = itr->model->mesh->n2e_getElem(itr->node, itr->current_index);
        e.id = elem.getSignedId();
        e.type = elem.getUnsignedType();
        return e;
@@ -223,7 +223,7 @@ void topFacetItr_Begin(TopFacetItr* itr){
        // If it is not valid, then we go to the next one
 
        TopElement currElem = topElemItr_GetCurr(itr->elemItr);
-       FEM_VarIndexAttribute::ID e = itr->model->mesh->e2e_getElem(currElem.id, itr->whichFacet, currElem.type);
+       ElemID e = itr->model->mesh->e2e_getElem(currElem.id, itr->whichFacet, currElem.type);
        if (e < currElem) {
                // Good, this facet is valid
        } else {
@@ -255,7 +255,7 @@ void topFacetItr_Next(TopFacetItr* itr){
                }
 
                TopElement currElem = topElemItr_GetCurr(itr->elemItr);
-               FEM_VarIndexAttribute::ID e = itr->model->mesh->e2e_getElem(currElem.id, itr->whichFacet, currElem.type);
+               ElemID e = itr->model->mesh->e2e_getElem(currElem.id, itr->whichFacet, currElem.type);
                
                if (e < currElem) {
                        found = true;
index 3fc963e0c92fc199db804d0049257b8fdcfad9c3..2099123d14d0b5bb9b4950764ffe759778adf129 100644 (file)
@@ -3,6 +3,8 @@
 #define __PARFUM_TOPS_TYPES___H
 
 
+#include <ParFUM_Types.h> // for ElemID
+
 #ifdef FP_TYPE_FLOAT
 //#warning "Using floats for various things"
 typedef float FP_TYPE;
@@ -19,7 +21,6 @@ typedef double FP_TYPE_SYNC;
 
 
 
-
 /** Tops uses some bit patterns for these, but we just use TopNode as a signed value to represent the corresponding ParFUM node. A non-negative value is a local node, while a negative value is a ghost. */
 typedef long TopNode;
 
@@ -27,8 +28,7 @@ typedef long TopNode;
 typedef TopNode TopVertex;
 
 /** A type for an element */
-typedef FEM_VarIndexAttribute::ID TopElement;
-
+typedef ElemID TopElement;
 
 /** A type for a facet */
 class TopFacet{