summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan <[email protected]>2018-05-18 10:50:19 -0700
committerJonathan <[email protected]>2018-05-25 09:11:55 -0700
commit3b4c3898771ac5e774bca9445a5a4a81670b7b17 (patch)
treef9fa4a3fefaf845859b7120041ae4efb1d62c078
parentc875860b1a79d3dc828275b6129c92f154b516e1 (diff)
reverted cuda8 changes (extra fields) and assert texture bug fix's assumption
-rw-r--r--src/abstract_hardware_model.h134
-rw-r--r--src/cuda-sim/cuda-sim.cc59
2 files changed, 45 insertions, 148 deletions
diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h
index 608a7e2..412c0a8 100644
--- a/src/abstract_hardware_model.h
+++ b/src/abstract_hardware_model.h
@@ -451,33 +451,32 @@ struct textureReference {
enum cudaTextureAddressMode addressMode[3];
struct cudaChannelFormatDesc channelDesc;
-#ifdef VERSION_EIGHT
- /**
- * Perform sRGB->linear conversion during texture read
- */
- int sRGB;
- /**
- * Limit to the anisotropy ratio
- */
- unsigned int maxAnisotropy;
- /**
- * Mipmap filter mode
- */
- enum cudaTextureFilterMode mipmapFilterMode;
- /**
- * Offset applied to the supplied mipmap level
- */
- float mipmapLevelBias;
- /**
- * Lower end of the mipmap level range to clamp access to
- */
- float minMipmapLevelClamp;
- /**
- * Upper end of the mipmap level range to clamp access to
- */
- float maxMipmapLevelClamp;
- int __cudaReserved[15];
-#endif
+//following commented section applies only to CUDA_VERSION 8+
+// /**
+// * Perform sRGB->linear conversion during texture read
+// */
+// int sRGB;
+// /**
+// * Limit to the anisotropy ratio
+// */
+// unsigned int maxAnisotropy;
+// /**
+// * Mipmap filter mode
+// */
+// enum cudaTextureFilterMode mipmapFilterMode;
+// /**
+// * Offset applied to the supplied mipmap level
+// */
+// float mipmapLevelBias;
+// /**
+// * Lower end of the mipmap level range to clamp access to
+// */
+// float minMipmapLevelClamp;
+// /**
+// * Upper end of the mipmap level range to clamp access to
+// */
+// float maxMipmapLevelClamp;
+// int __cudaReserved[15];
};
@@ -569,7 +568,10 @@ public:
tr->channelDesc.y==texref->channelDesc.y&&
tr->channelDesc.z==texref->channelDesc.z&&
tr->channelDesc.w==texref->channelDesc.w&&
- tr->channelDesc.f==texref->channelDesc.f &&
+ 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&&
@@ -591,6 +593,7 @@ public:
tr->__cudaReserved[12]==texref->__cudaReserved[12]&&
tr->__cudaReserved[13]==texref->__cudaReserved[13]&&
tr->__cudaReserved[14]==texref->__cudaReserved[14]
+ */
){
matches++;
t = kv->second;
@@ -598,15 +601,9 @@ public:
}
}
- printf("matches (texarray) = %d\n", matches);
- //assert(matches==1);
+ //printf("matches (texarray) = %d\n", matches);
+ assert(matches==1);
return t;
-
- //assert(false);
-
-// std::map<const struct textureReference*,const struct cudaArray*>::const_iterator t=m_TextureRefToCudaArray.find(texref);
-// assert(t != m_TextureRefToCudaArray.end());
-// return t->second;
}
const struct textureInfo* get_texinfo( const struct textureReference *texref ) const
{
@@ -623,7 +620,10 @@ public:
tr->channelDesc.y==texref->channelDesc.y&&
tr->channelDesc.z==texref->channelDesc.z&&
tr->channelDesc.w==texref->channelDesc.w&&
- tr->channelDesc.f==texref->channelDesc.f&&
+ 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&&
@@ -644,69 +644,23 @@ public:
tr->__cudaReserved[11]==texref->__cudaReserved[11]&&
tr->__cudaReserved[12]==texref->__cudaReserved[12]&&
tr->__cudaReserved[13]==texref->__cudaReserved[13]&&
- tr->__cudaReserved[14]==texref->__cudaReserved[14]){
+ tr->__cudaReserved[14]==texref->__cudaReserved[14]
+ */
+ ){
matches++;
t = kv->second;
- //return kv->second;
}
}
- printf("matches (texinfo) = %d\n", matches);
- //assert(matches==1);
+ //printf("matches (texinfo) = %d\n", matches);
+ assert(matches==1);
return t;
-
-// std::map<const struct textureReference*, const struct textureInfo*>::const_iterator t=m_TextureRefToTexureInfo.find(texref);
-// assert(t != m_TextureRefToTexureInfo.end());
-// return t->second;
}
const struct textureReferenceAttr* get_texattr( const struct textureReference *texref ) const
{
-// int matches = 0;
-// const struct textureReferenceAttr* t = NULL;
-// for (std::map<const struct textureReference*, const struct textureReferenceAttr*>::const_iterator kv = m_TextureRefToAttribute.begin(); kv!= m_TextureRefToAttribute.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&&
-// 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;
-// }
-// }
-//
-// printf("matches (texattr) = %d\n", matches);
-// //assert(matches==1);
-// return t;
-
+ //note textureReferenceAttr map behaves differently from cudaArray and
+ //textureInfo maps
std::map<const struct textureReference*, const struct textureReferenceAttr*>::const_iterator t=m_TextureRefToAttribute.find(texref);
assert(t != m_TextureRefToAttribute.end());
return t->second;
diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc
index 656091c..946043a 100644
--- a/src/cuda-sim/cuda-sim.cc
+++ b/src/cuda-sim/cuda-sim.cc
@@ -26,10 +26,6 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#ifndef VERSION_EIGHT
-#define VERSION_EIGHT
-#endif
-
#include "cuda-sim.h"
#include "instructions.h"
@@ -108,16 +104,6 @@ static address_type get_converge_point(address_type pc);
void gpgpu_t::gpgpu_ptx_sim_bindNameToTexture(const char* name, const struct textureReference* texref, int dim, int readmode, int ext)
{
-
-//#ifdef VERSION_EIGHT
-// int i;
-// printf("%s ", name);
-// printf("__cudaReserved:");
-// for (i = 0; i<15; i++){
-// printf(" %i", texref->__cudaReserved[i]);
-// }
-// printf("\n");
-//#endif
std::string texname(name);
m_NameToTextureRef[texname] = texref;
const textureReferenceAttr *texAttr = new textureReferenceAttr(texref, dim, (enum cudaTextureReadMode)readmode, ext);
@@ -154,50 +140,7 @@ unsigned int intLOGB2( unsigned int v ) {
void gpgpu_t::gpgpu_ptx_sim_bindTextureToArray(const struct textureReference* texref, const struct cudaArray* array)
{
-//#ifdef VERSION_EIGHT
-// int i;
-// printf("__cudaReserved:");
-// for (i = 0; i<15; i++){
-// printf(" %i", texref->__cudaReserved[i]);
-// }
-// printf("\n");
-//#endif
- // counts number of matches
-// int trMatches = 0;
-// for (auto& kv : m_NameToTextureRef){
-// const struct textureReference* tr = kv.second;
-// 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){
-//
-// m_TextureRefToCudaArray[tr] = array;
-// trMatches++;
-// }
-// }
-// printf("GPGPU-Sim PTX: matches to texref = %d\n", trMatches);
-// assert(trMatches==1);
-
- //tests if texref pointer matches any pointer in m_NameToTextureRef map
- int trMatches = 0;
- for (std::map<std::string,const struct textureReference*>::const_iterator kv = m_NameToTextureRef.begin(); kv!= m_NameToTextureRef.end(); kv ++){
- const struct textureReference* tr = kv->second;
- if (tr==texref){
- m_TextureRefToCudaArray[tr] = array;
- printf("%s\n", kv->first.c_str());
- trMatches++;
- }
- }
- printf("GPGPU-Sim PTX: matches to texref = %d\n", trMatches);
- //assert(trMatches==1);
-
- //m_TextureRefToCudaArray[texref] = array;
+ 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;
unsigned int Tx, Ty;