summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony LaTorre <telatorre@gmail.com>2011-05-31 12:46:48 -0400
committerAnthony LaTorre <telatorre@gmail.com>2011-05-31 12:46:48 -0400
commita1e0ae5cc0da5a639c933726211a9935be48685c (patch)
tree4bf9691f9640d33b9771d6eecd5e0c908ddc992a
parentc6e0c4b78ddbf292e33a3f87f7b553add91468b7 (diff)
downloadchroma-a1e0ae5cc0da5a639c933726211a9935be48685c.tar.gz
chroma-a1e0ae5cc0da5a639c933726211a9935be48685c.tar.bz2
chroma-a1e0ae5cc0da5a639c933726211a9935be48685c.zip
you can now specify block size for a gputhread
-rw-r--r--gputhread.py7
-rw-r--r--threadtest.py3
2 files changed, 6 insertions, 4 deletions
diff --git a/gputhread.py b/gputhread.py
index 26520c4..12ae145 100644
--- a/gputhread.py
+++ b/gputhread.py
@@ -10,13 +10,14 @@ class Job(object):
self.origins, self.directions = origins, directions
class GPUThread(threading.Thread):
- def __init__(self, device_id, geometry, jobs, output):
+ def __init__(self, device_id, geometry, jobs, output, nblocks=64):
threading.Thread.__init__(self)
self.device_id = device_id
self.geometry = geometry
self.jobs = jobs
self.output = output
+ self.nblocks = nblocks
self._stop = threading.Event()
def stop(self):
@@ -35,7 +36,7 @@ class GPUThread(threading.Thread):
while not self.stopped():
try:
- job = self.jobs.get(timeout=2)
+ job = self.jobs.get()
except Queue.Empty:
continue
@@ -45,7 +46,7 @@ class GPUThread(threading.Thread):
dest = np.empty(job.origins.size, dtype=np.int32)
dest_gpu = cuda.to_device(dest)
- propagate(np.int32(job.origins.size), origins_gpu, directions_gpu, np.int32(self.geometry.node_map.size-1), np.int32(self.geometry.first_node), dest_gpu, block=(64,1,1), grid=(job.origins.size//64+1,1), texrefs=texrefs)
+ propagate(np.int32(job.origins.size), origins_gpu, directions_gpu, np.int32(self.geometry.node_map.size-1), np.int32(self.geometry.first_node), dest_gpu, block=(self.nblocks,1,1), grid=(job.origins.size//self.nblocks+1,1), texrefs=texrefs)
cuda.Context.synchronize()
cuda.memcpy_dtoh(dest, dest_gpu)
diff --git a/threadtest.py b/threadtest.py
index 11bdaa4..fe90b4e 100644
--- a/threadtest.py
+++ b/threadtest.py
@@ -65,6 +65,7 @@ if __name__ == '__main__':
parser = optparse.OptionParser('%prog')
parser.add_option('-b', type='int', dest='nbits', default=8)
parser.add_option('-j', type='int', dest='ndevices', default=1)
+ parser.add_option('-n', type='int', dest='nblocks', default=64)
options, args = parser.parse_args()
lbne = LBNE()
@@ -74,7 +75,7 @@ if __name__ == '__main__':
gputhreads = []
for i in range(options.ndevices):
- gputhreads.append(GPUThread(i, lbne, jobs, output))
+ gputhreads.append(GPUThread(i, lbne, jobs, output, options.nblocks))
gputhreads[-1].start()
try: