2010-08-02 38 views
29

Có thể lập trình GPU trong Java không? Ý tôi là không sử dụng thư viện gốc.Lập trình GPU Java

Và mức độ cải thiện hiệu suất mà người dùng có thể mong đợi khi chuyển sang gpu?

Chỉnh sửa:

Tôi không xem xét lập trình trò chơi, tôi muốn thực hiện crunching số lõi cứng.

+1

bạn có nghĩa là viết chương trình shader trong Java? Hoặc sử dụng Java để tải một trình đổ bóng được viết bằng ngôn ngữ đổ bóng (GLSL hoặc HLSL) lên GPU và chạy nó? AFAICT, không có bất kỳ trình biên dịch Java bytecode nào (hoặc trình chuyển đổi từ mã byte Java sang bytecode của Java), vì vậy bạn không thể viết chương trình GPU của mình bằng Java. –

+0

Xin chào các bạn, các bạn đã ném ra một vài từ khóa mà tôi không biết !! Giống như tôi không biết ngôn ngữ bóng mờ là gì, nhưng phát hiện ra sau khi tìm kiếm nhanh trên google. Ok dựa trên câu trả lời của bạn, tôi sẽ thực hiện chỉnh sửa –

Trả lời

11

Có. Hỗ trợ Java3D, LWJGL và JOGL GLSL (Ngôn ngữ đổ bóng OpenGL).

Chỉnh sửa:
Bạn có thể sử dụng OpenCL nếu bạn muốn tính toán nền tảng trung tính, tính mục đích chung trên GPU. Khung công tác này cho phép bạn viết mã xử lý tất cả các đơn vị xử lý giống hệt nhau, mặc dù các bộ tính năng và môi trường thực thi cực kỳ khác nhau. Mặc dù, đây là chương trình cấp rất thấp so với Java.

Dường như lý tưởng của bạn sẽ là một JVM được viết bằng hỗ trợ OpenCL. Tìm kiếm trực tuyến, tôi tìm thấy một chút quan tâm trong ý tưởng nhưng không có bằng chứng về bất kỳ sự ủng hộ lớn nào.

bao nhiêu của một cải thiện hiệu suất người ta có thể mong đợi

đó phụ thuộc vào hệ thống bạn đang chạy trên và những gì sắp xếp dữ liệu mà bạn đang xử lý (Matrix và toán vector là cực kỳ hiệu quả trên GPU). Bạn có thể nhận được một số lợi ích lớn trên một hệ thống như tôi với hai GPU mạnh mẽ và một CPU đơn lõi đơn giản. Tuy nhiên trên một máy tính với một GPU khiêm tốn và một CPU quad-core, hiệu suất đạt được có thể có một thời gian khó khắc phục các chi phí.

+5

Có thể anh ấy đang tìm kiếm JOCL. http://www.jocl.org/ –

+1

Hướng dẫn JOCL: http://www.codeproject.com/KB/recipes/opencl-part1.aspx – rwong

+1

Ngoài ra hãy xem [rootbear] https://github.com/pcpratts/ rootbeer1/ –

2

Nếu bạn vẫn đang xem xét việc ghép số lõi cứng trong Java trên GPU mà không sử dụng thư viện gốc, bạn có thể quan tâm đến bài viết này http://ateji.blogspot.com/2011/02/java-on-gpu-with-ateji-px.html Chúng tôi (tôi là thành viên của nhóm Ateji) đã thấy hiệu suất lên đến 60x xa trên các ứng dụng Java có thể được ồ ạt song song.

+0

Tôi đã đăng câu hỏi trong blog được liên kết của bạn. Thực sự muốn có một tính năng như vậy. –

5

Rootbeer1 vừa được phát hành trên github: https://github.com/pcpratts/rootbeer1

Với Rootbeer bạn có thể lập trình sử dụng hầu hết các Java trừ như sau:

  1. phương pháp tự nhiên và lĩnh vực
  2. phản ánh
  3. động gọi phương thức
  4. thu gom rác
  5. ngủ ing bên trong màn hình

Điều này có nghĩa là bạn có thể sử dụng đồ thị đối tượng tùy ý với các loại hỗn hợp.