-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New PIR implementations #57
Conversation
add example cl code in shardcl
More code in ContextCL
Added the CUDA implementation |
High level comments:
|
Okay I've started working through your comments. Just for prosperity's sake, I ran the benchmarks with OpenCL using the CPU instead, just to see how it works. |
Re: pir/cuda_modules Re: committing the ptx file, I figured it was useful because
Re: Shard interface Just 3 more incomplete changes to go:
|
The plan was to separate kernel_cl.go into separate c files and read them in dynamically, but the problem is that the Cgo interface we are using for OpenCL requires a pointer to source code, and I spent all morning trying to generate a data structure that contained no go pointers. See here why: I'm officially giving up. I know kernel_cl.go is ugly, but from what I can tell, every consumer of this 'cl' package does the same thing. Also with respect to specifying devices, in the future, my plan was to just let a single context enumerate all GPUs and create 1 context across all GPU devices. See this issue: In summary, could you take a look at the changes since the last review? |
@@ -0,0 +1 @@ | |||
package pircl |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
stub?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With our build flags, the OpenCL and CUDA implementations are ignored for build/test on Travis. However, tests and goveralls will still look for a test report from these folders (which appear empty). See
https://travis-ci.org/privacylab/talek/jobs/230595872
I added doc.go and doc_test.go to keep the tests happy.
i think the docs files are to make godocs show up? are tests needed as well? I guess the only other comment is that it would be great to put in the pretty simple shim between this shard interface and the PIR interface currently used by server code. Then the end-to-end consistency test can verify correctness against these backends rather than doing that at the same time as changing server logic. |
Resolved the conflict with master |
when I try to use pircpu, its dependencies don't seem to have ever gotten installed (if i run go get in that directory, i can compile locally) That seems like it would be a problem more generally. |
Added:
Shard
interface in libpirI have yet to benchmark all 3 OpenCL kernels, but it's a pretty big PR, so it's be nice to get a review earlier rather than later.
NOTE: the ShardCUDA implementation is tracked in the ryscheng-cuda branch.