summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonathan <[email protected]>2018-05-18 14:41:23 -0700
committerJonathan <[email protected]>2018-05-25 09:11:55 -0700
commita93aa28a94140ee912c0cba0d9414d9da1588d54 (patch)
treef5f48db1056f6632197db5174c0011c1a9627d1d /src
parent6a39e5c5964f23a97dafaa6a66f2a9d9c37bbfdd (diff)
erase texinfo in unbind and disable assert
Diffstat (limited to 'src')
-rw-r--r--src/abstract_hardware_model.h195
-rw-r--r--src/cuda-sim/cuda-sim.cc2
2 files changed, 104 insertions, 93 deletions
diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h
index 3ef450e..6dd5436 100644
--- a/src/abstract_hardware_model.h
+++ b/src/abstract_hardware_model.h
@@ -556,106 +556,115 @@ public:
}
const struct cudaArray* get_texarray( const struct textureReference *texref ) const
{
- int matches = 0;
- const struct cudaArray* t = NULL;
- for (std::map<const struct textureReference*, const struct cudaArray*>::const_iterator kv = m_TextureRefToCudaArray.begin(); kv!= m_TextureRefToCudaArray.end(); kv ++){
- const struct textureReference* tr = kv->first;
- if (tr->normalized==texref->normalized&&
- tr->filterMode==texref->filterMode&&
- tr->addressMode[0]==texref->addressMode[0]&&
- tr->addressMode[1]==texref->addressMode[1]&&
- tr->addressMode[2]==texref->addressMode[2]&&
- tr->channelDesc.x==texref->channelDesc.x&&
- tr->channelDesc.y==texref->channelDesc.y&&
- tr->channelDesc.z==texref->channelDesc.z&&
- tr->channelDesc.w==texref->channelDesc.w&&
- tr->channelDesc.f==texref->channelDesc.f
- //following commented section applies only to CUDA_VERSION 8+
- /*
- &&
- tr->sRGB==texref->sRGB&&
- tr->maxAnisotropy==texref->maxAnisotropy&&
- tr->mipmapFilterMode==texref->mipmapFilterMode&&
- tr->mipmapLevelBias==texref->mipmapLevelBias&&
- tr->minMipmapLevelClamp==texref->minMipmapLevelClamp&&
- tr->maxMipmapLevelClamp==texref->maxMipmapLevelClamp&&
- tr->__cudaReserved[0] ==texref->__cudaReserved[0]&&
- tr->__cudaReserved[1] ==texref->__cudaReserved[1]&&
- tr->__cudaReserved[2] ==texref->__cudaReserved[2]&&
- tr->__cudaReserved[3] ==texref->__cudaReserved[3]&&
- tr->__cudaReserved[4] ==texref->__cudaReserved[4]&&
- tr->__cudaReserved[5] ==texref->__cudaReserved[5]&&
- tr->__cudaReserved[6] ==texref->__cudaReserved[6]&&
- tr->__cudaReserved[7] ==texref->__cudaReserved[7]&&
- tr->__cudaReserved[8] ==texref->__cudaReserved[8]&&
- tr->__cudaReserved[9] ==texref->__cudaReserved[9]&&
- tr->__cudaReserved[10]==texref->__cudaReserved[10]&&
- tr->__cudaReserved[11]==texref->__cudaReserved[11]&&
- tr->__cudaReserved[12]==texref->__cudaReserved[12]&&
- tr->__cudaReserved[13]==texref->__cudaReserved[13]&&
- tr->__cudaReserved[14]==texref->__cudaReserved[14]
- */
- ){
- matches++;
- t = kv->second;
- //return kv->second;
+
+ std::map<const struct textureReference*,const struct cudaArray*>::const_iterator t=m_TextureRefToCudaArray.find(texref);
+ if(t != m_TextureRefToCudaArray.end()){
+ return t->second;
+ } else{
+ int matches = 0;
+ const struct cudaArray* t = NULL;
+ for (std::map<const struct textureReference*, const struct cudaArray*>::const_iterator kv = m_TextureRefToCudaArray.begin();
+ kv!= m_TextureRefToCudaArray.end(); kv ++){
+ const struct textureReference* tr = kv->first;
+ if (tr->normalized==texref->normalized&&
+ tr->filterMode==texref->filterMode&&
+ tr->addressMode[0]==texref->addressMode[0]&&
+ tr->addressMode[1]==texref->addressMode[1]&&
+ tr->addressMode[2]==texref->addressMode[2]&&
+ tr->channelDesc.x==texref->channelDesc.x&&
+ tr->channelDesc.y==texref->channelDesc.y&&
+ tr->channelDesc.z==texref->channelDesc.z&&
+ tr->channelDesc.w==texref->channelDesc.w&&
+ tr->channelDesc.f==texref->channelDesc.f
+ //following commented section applies only to CUDA_VERSION 8+
+ /*
+ &&
+ tr->sRGB==texref->sRGB&&
+ tr->maxAnisotropy==texref->maxAnisotropy&&
+ tr->mipmapFilterMode==texref->mipmapFilterMode&&
+ tr->mipmapLevelBias==texref->mipmapLevelBias&&
+ tr->minMipmapLevelClamp==texref->minMipmapLevelClamp&&
+ tr->maxMipmapLevelClamp==texref->maxMipmapLevelClamp&&
+ tr->__cudaReserved[0] ==texref->__cudaReserved[0]&&
+ tr->__cudaReserved[1] ==texref->__cudaReserved[1]&&
+ tr->__cudaReserved[2] ==texref->__cudaReserved[2]&&
+ tr->__cudaReserved[3] ==texref->__cudaReserved[3]&&
+ tr->__cudaReserved[4] ==texref->__cudaReserved[4]&&
+ tr->__cudaReserved[5] ==texref->__cudaReserved[5]&&
+ tr->__cudaReserved[6] ==texref->__cudaReserved[6]&&
+ tr->__cudaReserved[7] ==texref->__cudaReserved[7]&&
+ tr->__cudaReserved[8] ==texref->__cudaReserved[8]&&
+ tr->__cudaReserved[9] ==texref->__cudaReserved[9]&&
+ tr->__cudaReserved[10]==texref->__cudaReserved[10]&&
+ tr->__cudaReserved[11]==texref->__cudaReserved[11]&&
+ tr->__cudaReserved[12]==texref->__cudaReserved[12]&&
+ tr->__cudaReserved[13]==texref->__cudaReserved[13]&&
+ tr->__cudaReserved[14]==texref->__cudaReserved[14]
+ */
+ ){
+ matches++;
+ t = kv->second;
+ }
}
+
+ //assert(matches==1);
+ return t;
}
-
- //printf("matches (texarray) = %d\n", matches);
- assert(matches==1);
- return t;
}
const struct textureInfo* get_texinfo( const struct textureReference *texref ) const
{
- int matches = 0;
- const struct textureInfo* t = NULL;
- for (std::map<const struct textureReference*, const struct textureInfo*>::const_iterator kv = m_TextureRefToTexureInfo.begin(); kv!= m_TextureRefToTexureInfo.end(); kv ++){
- const struct textureReference* tr = kv->first;
- if (tr->normalized==texref->normalized&&
- tr->filterMode==texref->filterMode&&
- tr->addressMode[0]==texref->addressMode[0]&&
- tr->addressMode[1]==texref->addressMode[1]&&
- tr->addressMode[2]==texref->addressMode[2]&&
- tr->channelDesc.x==texref->channelDesc.x&&
- tr->channelDesc.y==texref->channelDesc.y&&
- tr->channelDesc.z==texref->channelDesc.z&&
- tr->channelDesc.w==texref->channelDesc.w&&
- tr->channelDesc.f==texref->channelDesc.f
- //following commented section applies only to CUDA_VERSION 8+
- /*
- &&
- tr->sRGB==texref->sRGB&&
- tr->maxAnisotropy==texref->maxAnisotropy&&
- tr->mipmapFilterMode==texref->mipmapFilterMode&&
- tr->mipmapLevelBias==texref->mipmapLevelBias&&
- tr->minMipmapLevelClamp==texref->minMipmapLevelClamp&&
- tr->maxMipmapLevelClamp==texref->maxMipmapLevelClamp&&
- tr->__cudaReserved[0] ==texref->__cudaReserved[0]&&
- tr->__cudaReserved[1] ==texref->__cudaReserved[1]&&
- tr->__cudaReserved[2] ==texref->__cudaReserved[2]&&
- tr->__cudaReserved[3] ==texref->__cudaReserved[3]&&
- tr->__cudaReserved[4] ==texref->__cudaReserved[4]&&
- tr->__cudaReserved[5] ==texref->__cudaReserved[5]&&
- tr->__cudaReserved[6] ==texref->__cudaReserved[6]&&
- tr->__cudaReserved[7] ==texref->__cudaReserved[7]&&
- tr->__cudaReserved[8] ==texref->__cudaReserved[8]&&
- tr->__cudaReserved[9] ==texref->__cudaReserved[9]&&
- tr->__cudaReserved[10]==texref->__cudaReserved[10]&&
- tr->__cudaReserved[11]==texref->__cudaReserved[11]&&
- tr->__cudaReserved[12]==texref->__cudaReserved[12]&&
- tr->__cudaReserved[13]==texref->__cudaReserved[13]&&
- tr->__cudaReserved[14]==texref->__cudaReserved[14]
- */
- ){
- matches++;
- t = kv->second;
+ std::map<const struct textureReference*, const struct textureInfo*>::const_iterator t=m_TextureRefToTexureInfo.find(texref);
+ if(t != m_TextureRefToTexureInfo.end()){
+ return t->second;
+ }else{
+ int matches = 0;
+ const struct textureInfo* t = NULL;
+ for (std::map<const struct textureReference*, const struct textureInfo*>::const_iterator kv = m_TextureRefToTexureInfo.begin();
+ kv!= m_TextureRefToTexureInfo.end(); kv ++){
+ const struct textureReference* tr = kv->first;
+ if (tr->normalized==texref->normalized&&
+ tr->filterMode==texref->filterMode&&
+ tr->addressMode[0]==texref->addressMode[0]&&
+ tr->addressMode[1]==texref->addressMode[1]&&
+ tr->addressMode[2]==texref->addressMode[2]&&
+ tr->channelDesc.x==texref->channelDesc.x&&
+ tr->channelDesc.y==texref->channelDesc.y&&
+ tr->channelDesc.z==texref->channelDesc.z&&
+ tr->channelDesc.w==texref->channelDesc.w&&
+ tr->channelDesc.f==texref->channelDesc.f
+ //following commented section applies only to CUDA_VERSION 8+
+ /*
+ &&
+ tr->sRGB==texref->sRGB&&
+ tr->maxAnisotropy==texref->maxAnisotropy&&
+ tr->mipmapFilterMode==texref->mipmapFilterMode&&
+ tr->mipmapLevelBias==texref->mipmapLevelBias&&
+ tr->minMipmapLevelClamp==texref->minMipmapLevelClamp&&
+ tr->maxMipmapLevelClamp==texref->maxMipmapLevelClamp&&
+ tr->__cudaReserved[0] ==texref->__cudaReserved[0]&&
+ tr->__cudaReserved[1] ==texref->__cudaReserved[1]&&
+ tr->__cudaReserved[2] ==texref->__cudaReserved[2]&&
+ tr->__cudaReserved[3] ==texref->__cudaReserved[3]&&
+ tr->__cudaReserved[4] ==texref->__cudaReserved[4]&&
+ tr->__cudaReserved[5] ==texref->__cudaReserved[5]&&
+ tr->__cudaReserved[6] ==texref->__cudaReserved[6]&&
+ tr->__cudaReserved[7] ==texref->__cudaReserved[7]&&
+ tr->__cudaReserved[8] ==texref->__cudaReserved[8]&&
+ tr->__cudaReserved[9] ==texref->__cudaReserved[9]&&
+ tr->__cudaReserved[10]==texref->__cudaReserved[10]&&
+ tr->__cudaReserved[11]==texref->__cudaReserved[11]&&
+ tr->__cudaReserved[12]==texref->__cudaReserved[12]&&
+ tr->__cudaReserved[13]==texref->__cudaReserved[13]&&
+ tr->__cudaReserved[14]==texref->__cudaReserved[14]
+ */
+ ){
+ matches++;
+ t = kv->second;
+ }
}
+ //assert(matches==1);
+ return t;
}
-
- //printf("matches (texinfo) = %d\n", matches);
- assert(matches==1);
- return t;
}
const struct textureReferenceAttr* get_texattr( const struct textureReference *texref ) const
diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc
index ef16f43..6bdf75f 100644
--- a/src/cuda-sim/cuda-sim.cc
+++ b/src/cuda-sim/cuda-sim.cc
@@ -140,6 +140,7 @@ unsigned int intLOGB2( unsigned int v ) {
void gpgpu_t::gpgpu_ptx_sim_bindTextureToArray(const struct textureReference* texref, const struct cudaArray* array)
{
+ printf("GPGPU-Simm PTX: name from texture = %s\n", gpgpu_ptx_sim_findNamefromTexture(texref));
m_TextureRefToCudaArray[texref] = array;
unsigned int texel_size_bits = array->desc.w + array->desc.x + array->desc.y + array->desc.z;
unsigned int texel_size = texel_size_bits/8;
@@ -186,6 +187,7 @@ void gpgpu_t::gpgpu_ptx_sim_bindTextureToArray(const struct textureReference* te
void gpgpu_t::gpgpu_ptx_sim_unbindTexture(const struct textureReference* texref)
{
m_TextureRefToCudaArray.erase(texref);
+ m_TextureRefToTexureInfo.erase(texref);
}
unsigned g_assemble_code_next_pc=0;