Python C extension to compute the permanent.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
882B

  1. import os
  2. import time
  3. import multiprocessing as mp
  4. import numpy as np
  5. import lib
  6. def test_fn(perm_fn, name, dimension=6, steps=1000, dt=1e-3, bodies=101, threads=1):
  7. # Test the speed of the evolution function.
  8. sreal=np.random.uniform(0,1,(dimension, dimension))
  9. scomp=np.random.uniform(0,1,(dimension, dimension))
  10. submatrix=sreal+1j*scomp
  11. t0 = time.time()
  12. for i in range(steps):
  13. p=perm_fn(submatrix)
  14. t1 = time.time()
  15. print "{0} ({1}): {2} steps/sec".format(name, threads, int(steps / (t1 - t0)))
  16. if __name__ == "__main__":
  17. d=4
  18. steps=1000
  19. # Test on one core
  20. test_fn(lib.perm_python, "1 core, C", steps=steps, threads=1)
  21. # Test on one core
  22. test_fn(lib.perm_c, "1 core, C", steps=steps, threads=1)
  23. # Test on four cores
  24. test_fn(lib.perm_c, "All cores, C", steps=steps/threads, threads=threads)