title: Speeding up array lookup after traversing?
body: <p>I have a 123MB big <code>int</code>array, and it is basically used like this:</p>
  
  <pre><code>private static int[] data = new int[32487834]; 
  static int eval(int[] c)
  {
      int p = data[c[0]];
      p = data[p + c[1]];
      p = data[p + c[2]];
      p = data[p + c[3]];
      p = data[p + c[4]];
      p = data[p + c[5]];
      return data[p + c[6]];
  }
  </code></pre>
  
  <p><code>eval()</code> is called a lot (~50B times) with different <code>c</code> and I would like to know if (and how) I could speed it up. </p>
  
  <p>I already use a <a href="https://gist.github.com/4387720" rel="noreferrer">unsafe function with an fixed array</a> that makes use of all the CPUs. It's a C# port of the <a href="http://www.codingthewheel.com/archives/poker-hand-evaluator-roundup#2p2" rel="noreferrer">TwoPlusTwo 7 card evaluator by RayW</a>. The C++ version is insignificantly faster.</p>
  
  <p>Can the GPU be used to speed this up? </p>