2013-08-24 47 views
8

Gần đây tôi đã phát hiện ra sức mạnh của GP-GPU (đơn vị xử lý đồ họa đa năng) và muốn tận dụng lợi thế của nó để thực hiện các phép tính khoa học và toán học 'nặng' (có yêu cầu các cụm CPU lớn) máy đơn.Bắt đầu với PyOpenCL

Tôi biết rằng có một số giao diện để hoạt động trên GPU, nổi bật nhất trong số đó là CUDA và OpenCL. Sau này có lợi thế chống lại CUDA để chạy trên hầu hết các card đồ họa (NVIDIA, AMD, Intel) chứ không phải là thẻ NVIDA. Trong trường hợp của tôi, tôi có một GPU Intel 4000 thông thường có vẻ hợp tác tốt với OpenCL.

Bây giờ, tôi cần tìm hiểu cách hoạt động với PyOpenCL để hiểu rõ hơn! Vì vậy, ở đây có câu hỏi:

Làm cách nào để bắt đầu với PyOpenCL? Điều kiện tiên quyết là gì? Tôi có thực sự cần phải có kinh nghiệm trong Python và/hoặc OpenCL không?

Nền của tôi nằm trong fortran và thực tế tôi cần dịch và song song mã fortran dài thành python (hoặc pyopencl) chủ yếu đề cập đến giải quyết các ma trận PDE và chéo.

Tôi đã đọc hai trang web có liên quan http://enja.org/2011/02/22/adventures-in-pyopencl-part-1-getting-started-with-python/http://documen.tician.de/pyopencl/ nhưng chúng không thực sự hữu ích cho người mới (ví dụ: người giả).

Tôi chỉ không biết bắt đầu với điều gì. Tôi không khao khát trở thành một chuyên gia về lĩnh vực này, chỉ để tìm hiểu làm thế nào người ta có thể song song toán học đơn giản và đại số tuyến tính trên pyopencl.

Mọi lời khuyên và trợ giúp đều được hoan nghênh!

+0

Tôi cũng rất quan tâm đến việc tìm kiếm một tài liệu phong nha cho pyopencl. Tôi sẽ biết ơn nếu bạn có thể giữ cho tôi cập nhật. cảm ơn bạn –

Trả lời

8

Dường như bạn đang tìm kiếm con đường nhanh nhất và hiệu quả nhất để học PyOpenCL. Bạn không cần phải biết OpenCL (phần cứng) khi bắt đầu, nhưng sẽ rất hữu ích khi biết Python khi bạn bắt đầu.

Đối với học cú pháp Python một cách nhanh chóng, tôi khuyên bạn nên Python theo dõi Codecademy của: http://www.codecademy.com/tracks/python

Sau đó, quá trình lập trình song song Udacity là một nơi tuyệt vời để bắt đầu với GPGPU (mặc dù khóa học được giảng dạy trong CUDA). https://www.udacity.com/course/cs344 Khóa học này sẽ dạy cho bạn các khái niệm GPGPU cơ bản rất nhanh chóng. Bạn sẽ không cần GPU NVIDIA để tham gia, bởi vì tất cả các đánh giá khóa học đều được thực hiện trực tuyến.

Sau khi (hoặc trong) các Udacity Tất nhiên, tôi khuyên bạn nên đọc, chạy và tùy chỉnh PyOpenCL đang ví dụ: https://github.com/inducer/pyopencl/tree/master/examples

+0

cảm ơn bạn đã tư vấn cho bạn. Tôi thấy cuộc thảo luận này đã được vài năm. Có điều gì tốt hơn trong thời gian chờ đợi không? –

+0

@ Stéphane Tôi nghi ngờ rằng lời khuyên này vẫn cập nhật vì OpenCL và lập trình song song không đặc biệt di chuyển nhanh. OpenCL là một tập hợp con của các hướng dẫn chạy C trên phần cứng vật lý - điều đó làm cho nó trở thành một tình huống ít chất lỏng hơn so với một cái gì đó giống như Javascript đang chạy trên các trình duyệt web. – benshope

5

Không phân biệt ngôn ngữ nhận con nuôi cho máy tính GPGPU như Java, C/C++, Python, tôi khuyên bạn nên bắt đầu với những điều cơ bản về tính toán GPGPU và OpenCL.

Bạn có thể sử dụng các tài nguyên sau đây tất cả đều được định hướng C/C++ nhưng bạn nên cung cấp đủ kiến ​​thức về phần cứng OpenCL, GPGPU để giúp bạn bắt đầu.

  1. AMD OpenCL University Tool kit

  2. Hetergeneous Computing with OpenCL Book 2nd Edition

  3. NVIDIA OpenCL pages is another Excellent resorce

  4. Streamcomputing.eu has nice openCL starter articles.

  5. Intel OpenCL SDK tutorial

PyOpenCL cụ

  1. OpenCL in Action: How to Accelerate Graphics and Computation có một chương về PyOpenCL
  2. OpenCL Programming Guide có chương PyOpenCL

Cả cuốn sách chứa OpenCL 1.1 thực hiện nhưng nó phải là tốt điểm khởi đầu cho bạn.

1

Là một người mới đến lập trình GPU tôi thấy các bài viết liên quan mà bạn đề cập khá đơn giản dù tôi tìm thấy mẫu mã chạy hoàn toàn từ dòng lệnh nhưng không phải trong Eclipse với Anaconda. Tôi nghĩ rằng điều này có thể là vì pyopencl Eclipse từ anaconda khác với phiên bản dòng lệnh, và tôi vẫn chưa tìm ra cách giải quyết vấn đề này.

Để tìm hiểu trăn có một số lượng lớn tài nguyên trực tuyến bao gồm cả sách điện tử miễn phí.

https://wiki.python.org/moin/BeginnersGuide http://codecondo.com/10-ways-to-learn-python/

nên mới bắt đầu tốt. Nếu bạn sử dụng Eclipse, bạn nên cài đặt pydev. Trong mọi trường hợp cài đặt Anaconda https://docs.continuum.io/anaconda/install vì điều này sẽ giúp bạn tiết kiệm rất nhiều rắc rối.

Tôi ước tính một tuần hoặc lâu hơn để đạt đến trình độ thông thạo bạn cần trong Python miễn là bạn picj một vài dự án nhỏ đơn giản. Bạn cũng có thể thấy rằng với sổ ghi chép gọn gàng và scipy và có thể là ipython, bạn có thể không cần phải nghiên cứu kỹ về lập trình GPU

Các liên kết này có thể giúp bạn tránh lập trình GPU hoặc ít nhất là phải tìm hiểu nó. Hãy nhận biết rằng Thr chi phí chuyển đổi giữa các lõi có nghĩa là bạn có ot gán một lượng singificant việc phải mỗi lõi

http://blog.dominodatalab.com/simple-parallelization/ https://pythonhosted.org/joblib/parallel.html

Nói chung tôi thấy nó hiệu quả hơn, nếu ít vui vẻ, học chỉ có một điều tại một thời gian.

Tôi hy vọng điều này sẽ hữu ích.