summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan <[email protected]>2018-05-17 16:26:55 -0700
committerJonathan <[email protected]>2018-05-17 16:37:39 -0700
commit9476c4ccf17949a67a430155dfc93e66ca73d4a8 (patch)
tree0d1648596683e3ff66c9f6b01c6dbd24acccd9cd
parent7546c12af13aca0fdcba6a339913120c0ffed50d (diff)
abstract_hardware_model.h:texrefAttr is different and can be searched via pointer
cuda-sim.cc: counts matches between cudaBinTextureToArray texref param (pointer) to texref pointers in m_NameToTextureRef
-rw-r--r--src/abstract_hardware_model.h94
-rw-r--r--src/cuda-sim/cuda-sim.cc47
2 files changed, 84 insertions, 57 deletions
diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h
index c21ff6d..608a7e2 100644
--- a/src/abstract_hardware_model.h
+++ b/src/abstract_hardware_model.h
@@ -662,54 +662,54 @@ public:
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;
+// 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;
-// std::map<const struct textureReference*, const struct textureReferenceAttr*>::const_iterator t=m_TextureRefToAttribute.find(texref);
-// assert(t != m_TextureRefToAttribute.end());
-// return t->second;
+ std::map<const struct textureReference*, const struct textureReferenceAttr*>::const_iterator t=m_TextureRefToAttribute.find(texref);
+ assert(t != m_TextureRefToAttribute.end());
+ return t->second;
}
const gpgpu_functional_sim_config &get_config() const { return m_function_model_config; }
diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc
index 6e04ca8..39ffa63 100644
--- a/src/cuda-sim/cuda-sim.cc
+++ b/src/cuda-sim/cuda-sim.cc
@@ -26,6 +26,10 @@
// 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"
@@ -104,6 +108,16 @@ 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);
@@ -140,16 +154,15 @@ 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 normalized;
-// enum cudaTextureFilterMode filterMode;
-// enum cudaTextureAddressMode addressMode[3];
-// struct cudaChannelFormatDesc channelDesc;
-// int x;
-// int y;
-// int z;
-// int w;
-// enum cudaChannelFormatKind f;
// int trMatches = 0;
// for (auto& kv : m_NameToTextureRef){
// const struct textureReference* tr = kv.second;
@@ -170,7 +183,21 @@ void gpgpu_t::gpgpu_ptx_sim_bindTextureToArray(const struct textureReference* te
// }
// printf("GPGPU-Sim PTX: matches to texref = %d\n", trMatches);
// assert(trMatches==1);
- m_TextureRefToCudaArray[texref] = array;
+
+ //tests if texref pointer matches any pointer in m_NameToTextureRef map
+ int trMatches = 0;
+ for (auto& kv : m_NameToTextureRef){
+ const struct textureReference* tr = kv.second;
+ if (tr==texref){
+ m_TextureRefToCudaArray[tr] = array;
+ //printf("%s\n", kv.first);
+ trMatches++;
+ }
+ }
+ printf("GPGPU-Sim PTX: matches to texref = %d\n", trMatches);
+ //assert(trMatches==1);
+
+ //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;